source: trunk/src/halConfig.hpp @ 573

Revision 573, 5.1 KB checked in by Eoin, 12 years ago (diff)

Disabled libtorrent and serialization warnings over which I've no control.

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 "global/string_conv.hpp"
10#include "global/wtl_app.hpp"
11
12#include "halIni.hpp"
13
14class BitTorrentOptions;
15class SecurityOptions;
16class ProxyOptions;
17class TorrentsOptions;
18       
19namespace hal
20{
21
22class Config :
23        public hal::IniBase<Config>,
24        private boost::noncopyable
25{
26public:
27        Config() :
28                hal::IniBase<Config>("globals/bittorrent", "Config"),
29                globals_(),
30                torrent_defaults_(),
31                port_range_(6881,6881),
32                use_port_range_(false),
33                enable_dht_(true),
34                dht_settings_(),
35                enableIPFilter(false),
36                enableProxy(false),
37                proxyPort(0),
38                default_save_folder_((hal::app().exe_path().parent_path()/L"incoming").string()),
39                default_move_folder_((hal::app().exe_path().parent_path()/L"completed").string()),
40                use_move_to_(false),
41                save_prompt_(true),
42                enable_pe_(false),
43                pe_settings_(),
44                half_connections_(true),
45                half_connections_limit_(10),
46                mapping_upnp_(false),
47                mapping_nat_pmp_(false)
48        {
49                queue_settings_ = hal::bittorrent().get_queue_settings();
50                timeouts_ = hal::bittorrent().get_timeouts();
51        }
52       
53        friend class boost::serialization::access;
54        template<class Archive>
55        void serialize(Archive& ar, const unsigned int version)
56        {       
57                using boost::serialization::make_nvp;
58                switch (version)
59                {
60                case 6:
61                ar      & make_nvp("globals", globals_)
62                        & make_nvp("default_save_folder", default_save_folder_)
63                        & make_nvp("default_move_folder", default_move_folder_)
64                        & make_nvp("use_move_to", use_move_to_)
65                        & make_nvp("save_prompt", save_prompt_)
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                        & make_nvp("port_range", port_range_)
74                        & make_nvp("use_port_range", use_port_range_)
75                        & make_nvp("half_connections", half_connections_)
76                        & make_nvp("half_connections_limit", half_connections_limit_)
77                        & make_nvp("mapping_upnp", mapping_upnp_)
78                        & make_nvp("mapping_nat_pmp", mapping_nat_pmp_);
79                break;
80
81                case 4:
82                ar      & make_nvp("defaultMoveToFolder", default_move_folder_)
83                        & make_nvp("useMoveTo", use_move_to_);
84
85                case 3:
86                case 2:
87                ar      & make_nvp("halfConn", half_connections_)
88                        & make_nvp("halfConnLimit", half_connections_limit_);
89
90                case 1:
91                ar      & make_nvp("enablePe", enable_pe_)
92                        & make_nvp("peEncLevel", pe_settings_.encrypt_level)
93                        & make_nvp("pePerferRc4", pe_settings_.prefer_rc4)
94                        & make_nvp("peConInPolicy", pe_settings_.conn_in_policy)
95                        & make_nvp("peConOutPolicy", pe_settings_.conn_out_policy);
96
97                case 0:
98                ar      & make_nvp("maxConnections", globals_.total)
99                        & make_nvp("maxUploads", globals_.uploads)
100                        & make_nvp("downRate", globals_.download_rate)
101                        & make_nvp("upRate", globals_.upload_rate)
102                        & make_nvp("portFrom", port_range_.first)
103                        & make_nvp("portTo", port_range_.second);
104               
105                ar      & make_nvp("enableDHT", enable_dht_)
106                        & make_nvp("dhtMaxPeersReply", dht_settings_.max_peers_reply)
107                        & make_nvp("dhtSearchBranching", dht_settings_.search_branching)
108                        & make_nvp("dhtServicePort", dht_settings_.service_port)
109                        & make_nvp("dhtMaxFailCount", dht_settings_.max_fail_count);
110               
111                ar      & make_nvp("peerTimeout", timeouts_.peer_connect_timeout)
112                        & make_nvp("trackerTimeout", timeouts_.tracker_receive_timeout);
113
114                ar      & BOOST_SERIALIZATION_NVP(enableIPFilter)
115                        & make_nvp("portRange", use_port_range_)
116                        & make_nvp("torrentMaxConnections", torrent_defaults_.total)
117                        & make_nvp("torrentMaxUploads", torrent_defaults_.uploads)
118                        & make_nvp("torrentDownRate", torrent_defaults_.download_rate)
119                        & make_nvp("torrentUpRate", torrent_defaults_.upload_rate)
120                        & make_nvp("defaultSaveFolder", default_save_folder_)
121                        & make_nvp("savePrompt", save_prompt_);
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        friend class GlobalOptions;
133        friend class PortOptions;
134
135private:
136        bool settingsThread();
137       
138        hal::connections globals_;
139
140        std::pair<int, int> port_range_;
141        bool use_port_range_;
142
143        hal::connections torrent_defaults_;
144
145        std::wstring default_save_folder_;
146        std::wstring default_move_folder_;
147        bool use_move_to_;
148        bool save_prompt_;
149       
150        bool enable_dht_;
151        hal::dht_settings dht_settings_;
152       
153        bool enableIPFilter;
154       
155        bool enableProxy;
156        std::wstring proxyHost;
157        int proxyPort;
158        std::wstring proxyUsername;
159        std::wstring proxyPassword;
160       
161
162    bool enable_pe_;
163        hal::pe_settings pe_settings_;
164       
165        bool half_connections_;
166        int half_connections_limit_;
167
168        bool mapping_upnp_;
169        bool mapping_nat_pmp_;
170
171        hal::queue_settings queue_settings_;
172        hal::timeouts timeouts_;
173};
174
175Config& config();
176
177} // namespace hal
178
179BOOST_CLASS_VERSION(hal::Config, 6)
Note: See TracBrowser for help on using the repository browser.