source: trunk/src/halConfig.cpp @ 531

Revision 531, 3.1 KB checked in by Eoin, 11 years ago (diff)

Switched trunk to hal::wform.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2008.
3// Distributed under the Boost Software License, Version 1.0.
4//    (See accompanying file LICENSE_1_0.txt or copy at
5//          http://www.boost.org/LICENSE_1_0.txt)
6
7#pragma once
8
9#include "stdAfx.hpp"
10#include "Halite.hpp"
11
12#include "halConfig.hpp"
13#include "ProgressDialog.hpp"
14
15namespace hal
16{
17
18bool Config::settingsChanged()
19{
20//      thread settings(bind(&BitTConfig::settingsThread, this));
21        return settingsThread();
22}
23
24bool Config::settingsThread()
25{       
26        event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Applying BitTorrent session settings.")));       
27
28        bittorrent().set_mapping(mappingType); 
29
30        event_log.post(shared_ptr<EventDetail>(new EventMsg(
31                        hal::wform(L"Trying port in range %1% - %2%.") % portFrom % portTo)));
32        try
33        {
34        bool success = bittorrent().listen_on(
35                std::make_pair(portFrom, portTo));
36        if (!success)
37        {
38                hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
39                        new hal::EventDebug(event_logger::critical, L"settingsThread, Init")));
40               
41                return false;
42        }
43        }
44        catch(const std::exception& e)
45        {
46                hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
47                        new hal::EventStdException(event_logger::critical, e, L"settingsThread, Init"))); 
48               
49                return false;
50        }
51
52        event_log.post(shared_ptr<EventDetail>(new EventMsg(hal::wform(L"Opened listen port; %1%.") % bittorrent().is_listening_on())));
53       
54        try
55        {
56        if (enableIPFilter)
57        {
58                ProgressDialog progDlg(L"Loading IP filters...", bind(
59                        &bit::ensure_ip_filter_on, &bittorrent(), _1));
60                progDlg.DoModal();
61        }
62        else
63                bittorrent().ensure_ip_filter_off();
64        }
65        catch(const std::exception& e)
66        {
67                hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
68                        new hal::EventStdException(event_logger::critical, e, L"settingsThread, Load IP Filter"))); 
69        }       
70
71        try
72        {
73        if (enablePe)
74        {
75                bittorrent().ensure_pe_on(peEncLevel, peConInPolicy, peConOutPolicy, pePerferRc4);
76        }
77        else
78                bittorrent().ensure_pe_off();
79        }
80        catch(const std::exception& e)
81        {
82                hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
83                                new hal::EventStdException(event_logger::critical, e, L"settingsThread, Protocol Encryption"))); 
84        }
85       
86        bittorrent().setSessionHalfOpenLimit(halfConnLimit);
87       
88        bittorrent().resume_all();     
89       
90        bittorrent().set_session_limits(maxConnections, maxUploads);
91        bittorrent().set_session_speed( downRate, upRate);
92               
93        bittorrent().setTorrentDefaults(torrentMaxConnections,
94                torrentMaxUploads, torrentDownRate,     torrentUpRate);
95       
96        bittorrent().set_dht_settings(dhtMaxPeersReply, 
97                dhtSearchBranching, dhtServicePort, dhtMaxFailCount);
98
99        bittorrent().set_timeouts(timeouts_);   
100        bittorrent().set_queue_settings(queue_settings_);
101       
102        if (enableDHT)
103        {
104                if (!bittorrent().ensure_dht_on())
105                {
106                        bittorrent().ensure_dht_off();
107                       
108                        hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
109                                new hal::EventDebug(event_logger::critical, L"settingsThread, DHT Error"))); 
110                }
111        }
112        else
113                bittorrent().ensure_dht_off();
114               
115        // Settings seem to have applied ok!
116        save_to_ini(); 
117        return true;
118}
119
120Config& config()
121{
122        static Config c;
123        return c;
124}
125
126} // namespace hal
Note: See TracBrowser for help on using the repository browser.