source: trunk/src/halConfig.cpp @ 357

Revision 357, 2.6 KB checked in by Eoin, 12 years ago (diff)

Added small backing up of previous data xml files.

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