source: trunk/src/halConfig.cpp @ 542

Revision 542, 3.0 KB checked in by Eoin, 11 years ago (diff)

Updating HaliteWindow? serialization.

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(mapping_upnp_, mapping_nat_pmp_);     
29
30        event_log.post(shared_ptr<EventDetail>(new EventMsg(
31                        hal::wform(L"Trying port in range %1% - %2%.") % port_range_.first % port_range_.second)));
32        try
33        {
34        bool success = bittorrent().listen_on(port_range_);
35        if (!success)
36        {
37                hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
38                        new hal::EventDebug(event_logger::critical, L"settingsThread, Init")));
39               
40                return false;
41        }
42        }
43        catch(const std::exception& e)
44        {
45                hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
46                        new hal::EventStdException(event_logger::critical, e, L"settingsThread, Init"))); 
47               
48                return false;
49        }
50
51        event_log.post(shared_ptr<EventDetail>(new EventMsg(hal::wform(L"Opened listen port; %1%.") % bittorrent().is_listening_on())));
52       
53        try
54        {
55        if (enableIPFilter)
56        {
57                ProgressDialog progDlg(L"Loading IP filters...", bind(
58                        &bit::ensure_ip_filter_on, &bittorrent(), _1));
59                progDlg.DoModal();
60        }
61        else
62                bittorrent().ensure_ip_filter_off();
63        }
64        catch(const std::exception& e)
65        {
66                hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
67                        new hal::EventStdException(event_logger::critical, e, L"settingsThread, Load IP Filter"))); 
68        }       
69
70        try
71        {
72        if (enable_pe_)
73        {
74                bittorrent().ensure_pe_on(pe_settings_);
75        }
76        else
77                bittorrent().ensure_pe_off();
78        }
79        catch(const std::exception& e)
80        {
81                hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
82                                new hal::EventStdException(event_logger::critical, e, L"settingsThread, Protocol Encryption"))); 
83        }
84       
85        bittorrent().setSessionHalfOpenLimit(half_connections_limit_);
86       
87        bittorrent().resume_all();     
88       
89        bittorrent().set_session_limits(globals_.total, globals_.uploads);
90        bittorrent().set_session_speed(globals_.download_rate, globals_.upload_rate);
91               
92        bittorrent().set_torrent_defaults(torrent_defaults_);
93
94        bittorrent().set_timeouts(timeouts_);   
95        bittorrent().set_queue_settings(queue_settings_);
96       
97        if (enable_dht_)
98        {
99                if (!bittorrent().ensure_dht_on(dht_settings_))
100                {
101                        bittorrent().ensure_dht_off();
102                       
103                        hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
104                                new hal::EventDebug(event_logger::critical, L"settingsThread, DHT Error"))); 
105                }
106        }
107        else
108                bittorrent().ensure_dht_off();
109               
110        // Settings seem to have applied ok!
111        save_to_ini(); 
112        return true;
113}
114
115Config& config()
116{
117        static Config c;
118        return c;
119}
120
121} // namespace hal
Note: See TracBrowser for help on using the repository browser.