source: src/halConfig.cpp @ 267

Revision 267, 2.4 KB checked in by Eoin, 13 years ago (diff)
Line 
1
2#pragma once
3
4#include "stdAfx.hpp"
5
6#include "halConfig.hpp"
7#include "ProgressDialog.hpp"
8#include "Halite.hpp"
9
10namespace hal
11{
12
13void Config::settingsChanged()
14{
15//      thread settings(bind(&BitTConfig::settingsThread, this));
16        settingsThread();
17}
18
19void Config::settingsThread()
20{
21        try
22        {
23        if (enableIPFilter)
24        {
25                ProgressDialog progDlg(L"Loading IP filters...", bind(
26                        &BitTorrent::ensure_ip_filter_on, &bittorrent(), _1));
27                progDlg.DoModal();
28        }
29        else
30                bittorrent().ensure_ip_filter_off();
31        }
32        catch(const std::exception& e)
33        {
34                hal::event().post(boost::shared_ptr<hal::EventDetail>(
35                        new hal::EventStdException(Event::critical, e, L"settingsThread, Load IP Filter"))); 
36        }
37       
38        try
39        {
40        if (enablePe)
41        {
42                bittorrent().ensure_pe_on(peEncLevel, peConInPolicy, peConOutPolicy, pePerferRc4);
43        }
44        else
45                bittorrent().ensure_pe_off();
46        }
47        catch(const std::exception& e)
48        {
49                hal::event().post(boost::shared_ptr<hal::EventDetail>(
50                                new hal::EventStdException(Event::critical, e, L"settingsThread, Protocol Encryption"))); 
51        }
52       
53        try
54        {
55        bool success = bittorrent().listenOn(
56                std::make_pair(portFrom, portTo));
57        if (!success)
58        {
59                hal::event().post(boost::shared_ptr<hal::EventDetail>(
60                        new hal::EventDebug(Event::critical, L"settingsThread, Init"))); 
61
62//              MessageBox(0, app().res_wstr(IDS_TRYANOTHERPORT).c_str(), L"Init Exception", MB_ICONERROR|MB_OK);
63        }
64        }
65        catch(const std::exception& e)
66        {
67                hal::event().post(boost::shared_ptr<hal::EventDetail>(
68                        new hal::EventStdException(Event::critical, e, L"settingsThread, Init"))); 
69//              ::MessageBoxA(0, e.what(), "Init Exception", MB_ICONERROR|MB_OK);
70        }
71       
72        bittorrent().setSessionHalfOpenLimit(halfConnLimit);
73       
74        bittorrent().resumeAll();       
75       
76        bittorrent().setSessionLimits(
77                maxConnections, maxUploads);
78        bittorrent().setSessionSpeed(
79                downRate, upRate);
80               
81        bittorrent().setTorrentDefaults(torrentMaxConnections,
82                torrentMaxUploads, torrentDownRate,
83                torrentUpRate);
84       
85        bittorrent().setDhtSettings(dhtMaxPeersReply, 
86                dhtSearchBranching, dhtServicePort, 
87                dhtMaxFailCount);
88       
89        if (enableDHT)
90        {
91                if (!bittorrent().ensure_dht_on())
92                {
93                        bittorrent().ensure_dht_off();
94                       
95                        hal::event().post(boost::shared_ptr<hal::EventDetail>(
96                                new hal::EventDebug(Event::critical, L"settingsThread, DHT Error"))); 
97                }
98        }
99        else
100                bittorrent().ensure_dht_off();
101}
102
103Config& config()
104{
105        static Config c;
106        return c;
107}
108
109} // namespace hal
Note: See TracBrowser for help on using the repository browser.