source: trunk/src/halConfig.hpp @ 505

Revision 505, 6.1 KB checked in by Eoin, 12 years ago (diff)

Added configuration options for the new libtorrent queue feature.

RevLine 
[132]1
[370]2//         Copyright Eóin O'Callaghan 2006 - 2008.
[268]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
[132]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
[347]16#include "halIni.hpp"
[132]17
18class BitTorrentOptions;
[232]19class SecurityOptions;
[234]20class ProxyOptions;
[132]21class TorrentsOptions;
22       
23namespace hal
24{
25
26class Config :
[345]27        public hal::IniBase<Config>,
[132]28        private boost::noncopyable
29{
30public:
31        Config() :
[345]32                hal::IniBase<Config>("globals/bittorrent", "Config"),
[132]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),
[143]52                defaultSaveFolder((hal::app().exe_path().branch_path()/L"incoming").string()),
[403]53                defaultMoveToFolder((hal::app().exe_path().branch_path()/L"completed").string()),
54                useMoveTo(false),
[232]55                savePrompt(true),
56                enablePe(false),
57                peEncLevel(0),
58                pePerferRc4(false),
59                peConInPolicy(1),
[234]60                peConOutPolicy(1),
61                halfConn(true),
[380]62                halfConnLimit(10),
63                mappingType(0),
[381]64                peerTimeout(30),
[505]65                trackerTimeout(60),
66                active_downloads_(8),
67                active_seeds_(5),
68                seeds_hard_limit_(15),
69                seed_ratio_limit_(2.f),
70                seed_ratio_time_limit_(7.f),
71                seed_time_limit_(24 * 60 * 60),
72                dont_count_slow_torrents_(true),
73                auto_scrape_min_interval_(300),
74                auto_scrape_interval_(1800),
75                auto_manage_interval_(30),
76                close_redundant_connections_(true)
[132]77        {}
78       
79        friend class boost::serialization::access;
80        template<class Archive>
81        void serialize(Archive& ar, const unsigned int version)
82        {       
[505]83                using boost::serialization::make_nvp;
84
[132]85                ar & BOOST_SERIALIZATION_NVP(maxConnections);
86                ar & BOOST_SERIALIZATION_NVP(maxUploads);
87                ar & BOOST_SERIALIZATION_NVP(downRate);
88                ar & BOOST_SERIALIZATION_NVP(upRate);
89                ar & BOOST_SERIALIZATION_NVP(portFrom);
90                ar & BOOST_SERIALIZATION_NVP(portTo);
91               
92                ar & BOOST_SERIALIZATION_NVP(enableDHT);
93                ar & BOOST_SERIALIZATION_NVP(dhtMaxPeersReply);
94                ar & BOOST_SERIALIZATION_NVP(dhtSearchBranching);
95                ar & BOOST_SERIALIZATION_NVP(dhtServicePort);
96                ar & BOOST_SERIALIZATION_NVP(dhtMaxFailCount);
97                ar & BOOST_SERIALIZATION_NVP(enableIPFilter);
98                ar & BOOST_SERIALIZATION_NVP(portRange);
99               
100                ar & BOOST_SERIALIZATION_NVP(torrentMaxConnections);
101                ar & BOOST_SERIALIZATION_NVP(torrentMaxUploads);
102                ar & BOOST_SERIALIZATION_NVP(torrentDownRate);
103                ar & BOOST_SERIALIZATION_NVP(torrentUpRate);
104               
[234]105                if (version <= 1) {
106                        ar & BOOST_SERIALIZATION_NVP(enableProxy);
107                        ar & BOOST_SERIALIZATION_NVP(proxyHost);
108                        ar & BOOST_SERIALIZATION_NVP(proxyPort);
109                        ar & BOOST_SERIALIZATION_NVP(proxyUsername);
110                        ar & BOOST_SERIALIZATION_NVP(proxyPassword);
111                }
[132]112               
113                ar & BOOST_SERIALIZATION_NVP(defaultSaveFolder);
[403]114                if (version > 3) {
115                        ar & BOOST_SERIALIZATION_NVP(defaultMoveToFolder);
116                        ar & BOOST_SERIALIZATION_NVP(useMoveTo);
117                }
[232]118                ar & BOOST_SERIALIZATION_NVP(savePrompt);
119               
120                if (version > 0) {
121                        ar & BOOST_SERIALIZATION_NVP(enablePe);
122                        ar & BOOST_SERIALIZATION_NVP(peEncLevel);
123                        ar & BOOST_SERIALIZATION_NVP(pePerferRc4);
124                        ar & BOOST_SERIALIZATION_NVP(peConInPolicy);
125                        ar & BOOST_SERIALIZATION_NVP(peConOutPolicy);
126                }
[234]127                if (version > 1) {
128                        ar & BOOST_SERIALIZATION_NVP(halfConn);
129                        ar & BOOST_SERIALIZATION_NVP(halfConnLimit);
130                }
[380]131                if (version > 2) {
132                        ar & BOOST_SERIALIZATION_NVP(mappingType);
133                        ar & BOOST_SERIALIZATION_NVP(peerTimeout);
134                        ar & BOOST_SERIALIZATION_NVP(trackerTimeout);
135                }
[505]136
137                if (version > 4) {
138                        ar & make_nvp("auto_manage_interval", auto_manage_interval_);
139                        ar & make_nvp("active_downloads", active_downloads_);
140                        ar & make_nvp("active_seeds", active_seeds_);
141                        ar & make_nvp("seeds_hard_limit", seeds_hard_limit_);
142                        ar & make_nvp("seed_ratio_limit", seed_ratio_limit_);
143                        ar & make_nvp("seed_ratio_time_limit", seed_ratio_time_limit_);
144                        ar & make_nvp("seed_time_limit", seed_time_limit_);
145                        ar & make_nvp("dont_count_slow_torrents", dont_count_slow_torrents_);
146                        ar & make_nvp("auto_scrape_interval", auto_scrape_interval_);
147                        ar & make_nvp("auto_scrape_min_interval", auto_scrape_min_interval_);
148                        ar & make_nvp("close_redundant_connections", close_redundant_connections_);
149                }
[132]150        }
151       
[365]152        bool settingsChanged();
[132]153       
[232]154        friend class HaliteWindow;
[132]155        friend class BitTorrentOptions;
[232]156        friend class SecurityOptions;
[234]157        friend class ProxyOptions;
[132]158        friend class TorrentsOptions;
[505]159        friend class GlobalOptions;
160        friend class PortOptions;
[132]161
162private:
[365]163        bool settingsThread();
[132]164       
165        int maxConnections;
166        int maxUploads;
167       
168        float downRate;
169        float upRate;
170
171        int torrentMaxConnections;
172        int torrentMaxUploads;
173       
174        float torrentDownRate;
175        float torrentUpRate;
176       
177        int portFrom;
178        int portTo;
179        bool portRange;
180       
181        bool enableDHT;
182        int dhtMaxPeersReply;
183        int dhtSearchBranching;
184        int dhtServicePort;
185        int dhtMaxFailCount;
186       
187        bool enableIPFilter;
188       
189        bool enableProxy;
[352]190        std::wstring proxyHost;
[132]191        int proxyPort;
[352]192        std::wstring proxyUsername;
193        std::wstring proxyPassword;
[132]194       
[352]195        std::wstring defaultSaveFolder;
[403]196        std::wstring defaultMoveToFolder;
197        bool useMoveTo;
[132]198        bool savePrompt;
[232]199
200    bool enablePe;
201    int peEncLevel;
202    bool pePerferRc4;
203    int peConInPolicy;
204    int peConOutPolicy;
[234]205       
206        bool halfConn;
207        int halfConnLimit;
[380]208
209        int mappingType;
210        int peerTimeout;
211        int trackerTimeout;     
[505]212
213        int auto_manage_interval_;
214
215        int active_downloads_;
216        int active_seeds_;
217        int seeds_hard_limit_;
218        float seed_ratio_limit_;
219        float seed_ratio_time_limit_;
220        int seed_time_limit_;
221        bool dont_count_slow_torrents_;
222
223        int auto_scrape_min_interval_;
224        int auto_scrape_interval_;
225        bool close_redundant_connections_;
226
[132]227};
228
229Config& config();
230
231} // namespace hal
232
[505]233BOOST_CLASS_VERSION(hal::Config, 5)
Note: See TracBrowser for help on using the repository browser.