source: trunk/src/halConfig.cpp @ 541

Revision 541, 3.0 KB checked in by Eoin, 12 years ago (diff)

Updating halConfig 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(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 (enable_pe_)
74        {
75                bittorrent().ensure_pe_on(pe_settings_);
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(globals_.total, globals_.uploads);
91        bittorrent().set_session_speed(globals_.download_rate, globals_.upload_rate);
92               
93        bittorrent().set_torrent_defaults(torrent_defaults_);
94
95        bittorrent().set_timeouts(timeouts_);   
96        bittorrent().set_queue_settings(queue_settings_);
97       
98        if (enable_dht_)
99        {
100                if (!bittorrent().ensure_dht_on(dht_settings_))
101                {
102                        bittorrent().ensure_dht_off();
103                       
104                        hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
105                                new hal::EventDebug(event_logger::critical, L"settingsThread, DHT Error"))); 
106                }
107        }
108        else
109                bittorrent().ensure_dht_off();
110               
111        // Settings seem to have applied ok!
112        save_to_ini(); 
113        return true;
114}
115
116Config& config()
117{
118        static Config c;
119        return c;
120}
121
122} // namespace hal
Note: See TracBrowser for help on using the repository browser.