source: trunk/src/halConfig.hpp @ 541

Revision 541, 4.6 KB checked in by Eoin, 11 years ago (diff)

Updating halConfig serialization.

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                globals_(),
34                torrent_defaults_(),
35                portFrom(6881),
36                portTo(6881),
37                portRange(false),
38                enable_dht_(true),
39                dht_settings_(),
40                enableIPFilter(false),
41                enableProxy(false),
42                proxyPort(0),
43                defaultSaveFolder((hal::app().exe_path().branch_path()/L"incoming").string()),
44                defaultMoveToFolder((hal::app().exe_path().branch_path()/L"completed").string()),
45                useMoveTo(false),
46                savePrompt(true),
47                enable_pe_(false),
48                pe_settings_(),
49                halfConn(true),
50                halfConnLimit(10),
51                mappingType(0)
52        {
53                queue_settings_ = hal::bittorrent().get_queue_settings();
54                timeouts_ = hal::bittorrent().get_timeouts();
55        }
56       
57        friend class boost::serialization::access;
58        template<class Archive>
59        void serialize(Archive& ar, const unsigned int version)
60        {       
61                using boost::serialization::make_nvp;
62                switch (version)
63                {
64                case 6:
65                ar      & make_nvp("globals", globals_)
66                        & make_nvp("torrent_defaults", torrent_defaults_)
67                        & make_nvp("queue_settings", queue_settings_)
68                        & make_nvp("timeouts", timeouts_)
69                        & make_nvp("enable_dht", enable_dht_)
70                        & make_nvp("dht_settings", dht_settings_)
71                        & make_nvp("enable_pe", enable_pe_)
72                        & make_nvp("pe_settings", pe_settings_);
73                break;
74
75                case 4:
76                ar      & BOOST_SERIALIZATION_NVP(defaultMoveToFolder);
77                        & BOOST_SERIALIZATION_NVP(useMoveTo);
78
79                case 3:
80                ar      & BOOST_SERIALIZATION_NVP(mappingType);
81
82                case 2:
83                ar      & BOOST_SERIALIZATION_NVP(halfConn)
84                        & BOOST_SERIALIZATION_NVP(halfConnLimit);
85
86                case 1:
87                ar      & make_nvp("enablePe", enable_pe_)
88                        & make_nvp("peEncLevel", pe_settings_.encrypt_level)
89                        & make_nvp("pePerferRc4", pe_settings_.prefer_rc4)
90                        & make_nvp("peConInPolicy", pe_settings_.conn_in_policy)
91                        & make_nvp("peConOutPolicy", pe_settings_.conn_out_policy);
92
93                case 0:
94                ar      & make_nvp("maxConnections", globals_.total)
95                        & make_nvp("maxUploads", globals_.uploads)
96                        & make_nvp("downRate", globals_.download_rate)
97                        & make_nvp("upRate", globals_.upload_rate)
98                        & BOOST_SERIALIZATION_NVP(portFrom)
99                        & BOOST_SERIALIZATION_NVP(portTo);
100               
101                ar      & make_nvp("enableDHT", enable_dht_)
102                        & make_nvp("dhtMaxPeersReply", dht_settings_.max_peers_reply)
103                        & make_nvp("dhtSearchBranching", dht_settings_.search_branching)
104                        & make_nvp("dhtServicePort", dht_settings_.service_port)
105                        & make_nvp("dhtMaxFailCount", dht_settings_.max_fail_count);
106               
107                ar      & make_nvp("peerTimeout", timeouts_.peer_connect_timeout)
108                        & make_nvp("trackerTimeout", timeouts_.tracker_receive_timeout);
109
110                ar      & BOOST_SERIALIZATION_NVP(enableIPFilter)
111                        & BOOST_SERIALIZATION_NVP(portRange)
112                        & make_nvp("torrentMaxConnections", torrent_defaults_.total)
113                        & make_nvp("torrentMaxUploads", torrent_defaults_.uploads)
114                        & make_nvp("torrentDownRate", torrent_defaults_.download_rate)
115                        & make_nvp("torrentUpRate", torrent_defaults_.upload_rate)
116                        & BOOST_SERIALIZATION_NVP(defaultSaveFolder)
117                        & BOOST_SERIALIZATION_NVP(savePrompt);
118                }
119        }
120       
121        bool settingsChanged();
122       
123        friend class HaliteWindow;
124        friend class BitTorrentOptions;
125        friend class SecurityOptions;
126        friend class ProxyOptions;
127        friend class TorrentsOptions;
128        friend class GlobalOptions;
129        friend class PortOptions;
130
131private:
132        bool settingsThread();
133       
134        hal::connections globals_;
135        hal::connections torrent_defaults_;
136       
137        int portFrom;
138        int portTo;
139        bool portRange;
140       
141        bool enable_dht_;
142        hal::dht_settings dht_settings_;
143       
144        bool enableIPFilter;
145       
146        bool enableProxy;
147        std::wstring proxyHost;
148        int proxyPort;
149        std::wstring proxyUsername;
150        std::wstring proxyPassword;
151       
152        std::wstring defaultSaveFolder;
153        std::wstring defaultMoveToFolder;
154        bool useMoveTo;
155        bool savePrompt;
156
157    bool enable_pe_;
158        hal::pe_settings pe_settings_;
159       
160        bool halfConn;
161        int halfConnLimit;
162
163        int mappingType;
164
165        hal::queue_settings queue_settings_;
166        hal::timeouts timeouts_;
167};
168
169Config& config();
170
171} // namespace hal
172
173BOOST_CLASS_VERSION(hal::Config, 6)
Note: See TracBrowser for help on using the repository browser.