source: src/halConfig.hpp @ 345

Revision 345, 4.0 KB checked in by Eoin, 12 years ago (diff)

Minor renaming and attempts to decouple GUI from Torrents.

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 <boost/archive/xml_oarchive.hpp>
10#include <boost/archive/xml_iarchive.hpp>
11#include <boost/serialization/version.hpp>
12
13#include "global/string_conv.hpp"
14#include "global/wtl_app.hpp"
15
16#include "HaliteIni.hpp"
17
18class BitTorrentOptions;
19class SecurityOptions;
20class ProxyOptions;
21class TorrentsOptions;
22       
23namespace hal
24{
25
26class Config :
27        public hal::IniBase<Config>,
28        private boost::noncopyable
29{
30public:
31        Config() :
32                hal::IniBase<Config>("globals/bittorrent", "Config"),
33                maxConnections(200),
34                maxUploads(20),
35                downRate(-1),
36                upRate(-1),
37                torrentMaxConnections(50),
38                torrentMaxUploads(10),
39                torrentDownRate(-1),
40                torrentUpRate(-1),
41                portFrom(6881),
42                portTo(6881),
43                portRange(false),
44                enableDHT(false),
45                dhtMaxPeersReply(50),
46                dhtSearchBranching(5),         
47                dhtServicePort(6881),
48                dhtMaxFailCount(20),
49                enableIPFilter(false),
50                enableProxy(false),
51                proxyPort(0),
52                defaultSaveFolder((hal::app().exe_path().branch_path()/L"incoming").string()),
53                savePrompt(true),
54                enablePe(false),
55                peEncLevel(0),
56                pePerferRc4(false),
57                peConInPolicy(1),
58                peConOutPolicy(1),
59                halfConn(true),
60                halfConnLimit(10)
61        {}
62       
63        friend class boost::serialization::access;
64        template<class Archive>
65        void serialize(Archive& ar, const unsigned int version)
66        {       
67                ar & BOOST_SERIALIZATION_NVP(maxConnections);
68                ar & BOOST_SERIALIZATION_NVP(maxUploads);
69                ar & BOOST_SERIALIZATION_NVP(downRate);
70                ar & BOOST_SERIALIZATION_NVP(upRate);
71                ar & BOOST_SERIALIZATION_NVP(portFrom);
72                ar & BOOST_SERIALIZATION_NVP(portTo);
73               
74                ar & BOOST_SERIALIZATION_NVP(enableDHT);
75                ar & BOOST_SERIALIZATION_NVP(dhtMaxPeersReply);
76                ar & BOOST_SERIALIZATION_NVP(dhtSearchBranching);
77                ar & BOOST_SERIALIZATION_NVP(dhtServicePort);
78                ar & BOOST_SERIALIZATION_NVP(dhtMaxFailCount);
79                ar & BOOST_SERIALIZATION_NVP(enableIPFilter);
80                ar & BOOST_SERIALIZATION_NVP(portRange);
81               
82                ar & BOOST_SERIALIZATION_NVP(torrentMaxConnections);
83                ar & BOOST_SERIALIZATION_NVP(torrentMaxUploads);
84                ar & BOOST_SERIALIZATION_NVP(torrentDownRate);
85                ar & BOOST_SERIALIZATION_NVP(torrentUpRate);
86               
87                if (version <= 1) {
88                        ar & BOOST_SERIALIZATION_NVP(enableProxy);
89                        ar & BOOST_SERIALIZATION_NVP(proxyHost);
90                        ar & BOOST_SERIALIZATION_NVP(proxyPort);
91                        ar & BOOST_SERIALIZATION_NVP(proxyUsername);
92                        ar & BOOST_SERIALIZATION_NVP(proxyPassword);
93                }
94               
95                ar & BOOST_SERIALIZATION_NVP(defaultSaveFolder);
96                ar & BOOST_SERIALIZATION_NVP(savePrompt);
97               
98                if (version > 0) {
99                        ar & BOOST_SERIALIZATION_NVP(enablePe);
100                        ar & BOOST_SERIALIZATION_NVP(peEncLevel);
101                        ar & BOOST_SERIALIZATION_NVP(pePerferRc4);
102                        ar & BOOST_SERIALIZATION_NVP(peConInPolicy);
103                        ar & BOOST_SERIALIZATION_NVP(peConOutPolicy);
104                }
105                if (version > 1) {
106                        ar & BOOST_SERIALIZATION_NVP(halfConn);
107                        ar & BOOST_SERIALIZATION_NVP(halfConnLimit);
108                }
109        }
110       
111        void settingsChanged();
112       
113        friend class HaliteWindow;
114        friend class BitTorrentOptions;
115        friend class SecurityOptions;
116        friend class ProxyOptions;
117        friend class TorrentsOptions;
118
119private:
120        void settingsThread();
121       
122        int maxConnections;
123        int maxUploads;
124       
125        float downRate;
126        float upRate;
127
128        int torrentMaxConnections;
129        int torrentMaxUploads;
130       
131        float torrentDownRate;
132        float torrentUpRate;
133       
134        int portFrom;
135        int portTo;
136        bool portRange;
137       
138        bool enableDHT;
139        int dhtMaxPeersReply;
140        int dhtSearchBranching;
141        int dhtServicePort;
142        int dhtMaxFailCount;
143       
144        bool enableIPFilter;
145       
146        bool enableProxy;
147        wstring proxyHost;
148        int proxyPort;
149        wstring proxyUsername;
150        wstring proxyPassword;
151       
152        wstring defaultSaveFolder;
153        bool savePrompt;
154
155    bool enablePe;
156    int peEncLevel;
157    bool pePerferRc4;
158    int peConInPolicy;
159    int peConOutPolicy;
160       
161        bool halfConn;
162        int halfConnLimit;
163};
164
165Config& config();
166
167} // namespace hal
168
169BOOST_CLASS_VERSION(hal::Config, 2)
Note: See TracBrowser for help on using the repository browser.