source: trunk/src/halConfig.hpp @ 403

Revision 403, 4.6 KB checked in by Eoin, 12 years ago (diff)

Added command to recheck torrents.

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 <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 "halIni.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                defaultMoveToFolder((hal::app().exe_path().branch_path()/L"completed").string()),
54                useMoveTo(false),
55                savePrompt(true),
56                enablePe(false),
57                peEncLevel(0),
58                pePerferRc4(false),
59                peConInPolicy(1),
60                peConOutPolicy(1),
61                halfConn(true),
62                halfConnLimit(10),
63                mappingType(0),
64                peerTimeout(30),
65                trackerTimeout(60)
66        {}
67       
68        friend class boost::serialization::access;
69        template<class Archive>
70        void serialize(Archive& ar, const unsigned int version)
71        {       
72                ar & BOOST_SERIALIZATION_NVP(maxConnections);
73                ar & BOOST_SERIALIZATION_NVP(maxUploads);
74                ar & BOOST_SERIALIZATION_NVP(downRate);
75                ar & BOOST_SERIALIZATION_NVP(upRate);
76                ar & BOOST_SERIALIZATION_NVP(portFrom);
77                ar & BOOST_SERIALIZATION_NVP(portTo);
78               
79                ar & BOOST_SERIALIZATION_NVP(enableDHT);
80                ar & BOOST_SERIALIZATION_NVP(dhtMaxPeersReply);
81                ar & BOOST_SERIALIZATION_NVP(dhtSearchBranching);
82                ar & BOOST_SERIALIZATION_NVP(dhtServicePort);
83                ar & BOOST_SERIALIZATION_NVP(dhtMaxFailCount);
84                ar & BOOST_SERIALIZATION_NVP(enableIPFilter);
85                ar & BOOST_SERIALIZATION_NVP(portRange);
86               
87                ar & BOOST_SERIALIZATION_NVP(torrentMaxConnections);
88                ar & BOOST_SERIALIZATION_NVP(torrentMaxUploads);
89                ar & BOOST_SERIALIZATION_NVP(torrentDownRate);
90                ar & BOOST_SERIALIZATION_NVP(torrentUpRate);
91               
92                if (version <= 1) {
93                        ar & BOOST_SERIALIZATION_NVP(enableProxy);
94                        ar & BOOST_SERIALIZATION_NVP(proxyHost);
95                        ar & BOOST_SERIALIZATION_NVP(proxyPort);
96                        ar & BOOST_SERIALIZATION_NVP(proxyUsername);
97                        ar & BOOST_SERIALIZATION_NVP(proxyPassword);
98                }
99               
100                ar & BOOST_SERIALIZATION_NVP(defaultSaveFolder);
101                if (version > 3) {
102                        ar & BOOST_SERIALIZATION_NVP(defaultMoveToFolder);
103                        ar & BOOST_SERIALIZATION_NVP(useMoveTo);
104                }
105                ar & BOOST_SERIALIZATION_NVP(savePrompt);
106               
107                if (version > 0) {
108                        ar & BOOST_SERIALIZATION_NVP(enablePe);
109                        ar & BOOST_SERIALIZATION_NVP(peEncLevel);
110                        ar & BOOST_SERIALIZATION_NVP(pePerferRc4);
111                        ar & BOOST_SERIALIZATION_NVP(peConInPolicy);
112                        ar & BOOST_SERIALIZATION_NVP(peConOutPolicy);
113                }
114                if (version > 1) {
115                        ar & BOOST_SERIALIZATION_NVP(halfConn);
116                        ar & BOOST_SERIALIZATION_NVP(halfConnLimit);
117                }
118                if (version > 2) {
119                        ar & BOOST_SERIALIZATION_NVP(mappingType);
120                        ar & BOOST_SERIALIZATION_NVP(peerTimeout);
121                        ar & BOOST_SERIALIZATION_NVP(trackerTimeout);
122                }
123        }
124       
125        bool settingsChanged();
126       
127        friend class HaliteWindow;
128        friend class BitTorrentOptions;
129        friend class SecurityOptions;
130        friend class ProxyOptions;
131        friend class TorrentsOptions;
132
133private:
134        bool settingsThread();
135       
136        int maxConnections;
137        int maxUploads;
138       
139        float downRate;
140        float upRate;
141
142        int torrentMaxConnections;
143        int torrentMaxUploads;
144       
145        float torrentDownRate;
146        float torrentUpRate;
147       
148        int portFrom;
149        int portTo;
150        bool portRange;
151       
152        bool enableDHT;
153        int dhtMaxPeersReply;
154        int dhtSearchBranching;
155        int dhtServicePort;
156        int dhtMaxFailCount;
157       
158        bool enableIPFilter;
159       
160        bool enableProxy;
161        std::wstring proxyHost;
162        int proxyPort;
163        std::wstring proxyUsername;
164        std::wstring proxyPassword;
165       
166        std::wstring defaultSaveFolder;
167        std::wstring defaultMoveToFolder;
168        bool useMoveTo;
169        bool savePrompt;
170
171    bool enablePe;
172    int peEncLevel;
173    bool pePerferRc4;
174    int peConInPolicy;
175    int peConOutPolicy;
176       
177        bool halfConn;
178        int halfConnLimit;
179
180        int mappingType;
181        int peerTimeout;
182        int trackerTimeout;     
183};
184
185Config& config();
186
187} // namespace hal
188
189BOOST_CLASS_VERSION(hal::Config, 4)
Note: See TracBrowser for help on using the repository browser.