~ubuntu-branches/ubuntu/precise/amule-adunanza/precise

« back to all changes in this revision

Viewing changes to src/RemoteSettings.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2010-02-18 21:16:23 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100218211623-gptwe60zx1knfkmu
Tags: 2010.1+2.2.6-0ubuntu1
* New upstream release (LP: #524697)
  - Drop manpages_spelling_fixes.diff fixed by upstream
  - Drop cryptopp-reference.diff fixed by upstream
  - Bump Standards-Version no changes required
  - Update install files (amule -> amuleadunanza)
  - debian/rules: amule.xpm -> amuleadunanza.xpm
  - Add README.Debian

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
#include <wx/filefn.h>
40
40
#include <wx/url.h>         // wxURL
41
41
#include <common/StringFunctions.h>
 
42
#include "amule.h"
42
43
#include "AdunanzA.h"
 
44
#include "Preferences.h" // needed for thePrefs
43
45
 
44
46
#define RSEXPIRETIME HR2S(96)
45
47
 
53
55
 
54
56
void CRemoteSettings::AllocateAdunanzaConf()
55
57
{
56
 
        wxString theAdunanzAConfigPath = ConfigDir + CRemoteSettings::ADUNANZA_CONF;
57
 
 
58
 
 
59
 
 
60
 
        if (cfg) delete cfg;
61
 
 
62
 
        cfg = 0;
 
58
        wxString theAdunanzAConfigPath = m_configDir + CRemoteSettings::ADUNANZA_CONF;
 
59
 
 
60
 
 
61
 
 
62
        if (m_pFileConfig) delete m_pFileConfig;
 
63
 
 
64
        m_pFileConfig = 0;
63
65
 
64
66
        try {
65
 
                cfg = new wxFileConfig(wxEmptyString, wxEmptyString, theAdunanzAConfigPath );
 
67
                m_pFileConfig = new wxFileConfig(wxEmptyString, wxEmptyString, theAdunanzAConfigPath );
66
68
        }
67
69
        catch (const std::bad_alloc& ba) {
68
70
                std::cerr << "(CRemoteSettings::AllocateAdunanzaConf) Failed to allocate AdunanzA config manager - " << ba.what() << std::endl;
77
79
}
78
80
 
79
81
CRemoteSettings::CRemoteSettings() :
 
82
        m_validity(0x0),
 
83
        m_nextUpdate(0),
 
84
        m_failCount(0),
 
85
        m_expireTime(0),
 
86
        m_recheckTime(0),
 
87
        m_pFileConfig(0),
 
88
#if 0
80
89
        kadRepublishTimeK(KADEMLIAREPUBLISHTIMEK),
81
90
        kadRepublishTimeS(KADEMLIAREPUBLISHTIMES),
82
91
        kadRepublishTimeN(KADEMLIAREPUBLISHTIMEN),
92
101
        kadFreshGuess_Weight(KADEMLIAFRESHGUESS_WEIGHT),
93
102
        kadFreshGuess_NoNorm(KADEMLIAFRESHGUESS_NONORMSOURCES),
94
103
        kadFreshGuess_LowNorm(KADEMLIAFRESHGUESS_LOWNORMSOURCES),
95
 
        maxSrc(MAX_SOURCES_FILE_SOFT),
96
 
        maxSrcUdp(MAX_SOURCES_FILE_UDP),
 
104
#endif
 
105
        m_maxSrc(MAX_SOURCES_FILE_SOFT),
 
106
        m_maxSrcUdp(MAX_SOURCES_FILE_UDP),
 
107
#if 0
97
108
        kadFindValue(KADEMLIA_FIND_VALUE),
98
109
        kadStore(KADEMLIA_STORE),
99
110
        kadFindNode(KADEMLIA_FIND_NODE),
103
114
        mVer(0),
104
115
        kadOpcode(OP_KADEMLIAHEADER),
105
116
        kadZOpcode(OP_KADEMLIAPACKEDPROT),
106
 
        UpdateURL(wxT(ADURM_URL)),
107
 
        nextUpdate(0),
108
 
        failCount(0),
109
 
        expireTime(0),
110
 
        recheckTime(0),
111
 
        cfg(0)
 
117
#endif
 
118
        m_AduValRipBanda_Std(ADUNANZA_DEF_BW_EXT), // Mr Hyde allineamento a 3.16 - ripartitore di banda
 
119
        m_UpdateURL(wxT(ADURM_URL))
112
120
{
113
 
 
114
 
        ConfigDir = GetConfigDir();
 
121
        // wxMutexLocker rmLock(m_mutex); // Mr Hyde: per evitare casini di accessi concorrenti
 
122
        m_configDir = GetConfigDir();
115
123
        
116
124
        AllocateAdunanzaConf();
117
 
        if (!cfg) {
 
125
        if (!m_pFileConfig) {
118
126
                std::cerr << "AdunanzA config is NULL - cannot continue" << std::endl;
119
127
                return;
120
128
        }
123
131
        {
124
132
 
125
133
                wxString nU;
126
 
                cfg->Read(wxT("/Adunanza/nextUpdate") , &nU, wxT("0"));
127
 
                nextUpdate = strtoul(unicode2char(nU.c_str()),NULL,10);
128
 
                cfg->Read(wxT("/Adunanza/failCount") , &failCount, failCount);
 
134
                m_pFileConfig->Read(wxT("/Adunanza/nextUpdate") , &nU, wxT("0"));
 
135
                m_nextUpdate = strtoul(unicode2char(nU.c_str()),NULL,10);
 
136
                m_pFileConfig->Read(wxT("/Adunanza/failCount") , &m_failCount, m_failCount);
129
137
 
130
138
                //std::cout << "---------------- On init -----------------" << std::endl;
131
139
                //PrintAllValues();
132
140
 
133
141
                // ReadSettings(cfg); Mr Hyde
134
 
                ReadSettings(*cfg); // Mr Hyde
 
142
                ReadSettings(*m_pFileConfig); // Mr Hyde
135
143
        }
136
144
        catch(const std::exception& e)
137
145
        {
142
150
                std::cerr << "(CRemoteSettings) Got unidentified exception" << std::endl;
143
151
        }
144
152
 
145
 
        if ( nextUpdate > time(NULL) + (time_t)expireTime )
146
 
                nextUpdate = time(NULL) + (time_t)expireTime ;
 
153
        time_t tmp_next = time(NULL) + (time_t)m_expireTime ;
 
154
        if ( m_nextUpdate > tmp_next )
 
155
                m_nextUpdate = tmp_next;
147
156
 
148
157
        // std::cout << "---------------- After reading -----------------" << std::endl;
149
158
        //PrintAllValues();
 
159
        
 
160
        setValid();
 
161
        
150
162
}
151
163
 
152
164
CRemoteSettings::~CRemoteSettings() {
 
165
        // wxMutexLocker rmLock(m_mutex); // Mr Hyde: per evitare casini di accessi concorrenti
153
166
        // std::cout << "---------------- On close -----------------" << std::endl;
154
167
        //PrintAllValues();
155
168
 
156
169
        SaveSettings();
157
 
        delete cfg;
158
 
        cfg = NULL; // Mr Hyde
 
170
        delete m_pFileConfig;
 
171
        m_pFileConfig = NULL; // Mr Hyde
159
172
}
160
173
 
161
174
void CRemoteSettings::PrintAllValues() {
162
175
#if ADU_BETA_MAJ > 0
163
 
        std::cout << "kadRepublishTimeK:     " << kadRepublishTimeK << '\n'
164
 
                  << "kadRepublishTimeS:     " << kadRepublishTimeS << '\n'
165
 
                  << "kadRepublishTimeN:     " << kadRepublishTimeN << '\n'
166
 
                  << "kadIndexLifeK:         " << kadIndexLifeK << '\n' // Mr Hyde all. eMule Adu 3.15b74
167
 
                  << "kadIndexLifeS:         " << kadIndexLifeS << '\n' // Mr Hyde all. eMule Adu 3.15b74
168
 
                  << "kadTotalStoreKey:      " << kadTotalStoreKey << '\n'
169
 
                  << "kadTotalStoreSrc:      " << kadTotalStoreSrc << '\n'
170
 
                  << "kadTotalStoreNotes:    " << kadTotalStoreNotes << '\n'
171
 
                  << "kadTotalSearchFile:    " << kadTotalSearchFile << '\n'
172
 
                  << "kadMaxSrcFile:         " << kadMaxSrcFile << '\n'
173
 
                  << "kadMaxNotFile:         " << kadMaxNotFile << '\n'
174
 
                  << "kadFreshGuess_Tol:     " << kadFreshGuess_Tol << '\n'
175
 
                  << "kadFreshGuess_Weight:  " << kadFreshGuess_Weight << '\n'
176
 
                  << "kadFreshGuess_LowNorm: " << kadFreshGuess_LowNorm << '\n'
177
 
                  << "kadFreshGuess_NoNorm: " << kadFreshGuess_NoNorm << '\n'
178
 
                  << "maxSrc:               " << maxSrc << '\n'
179
 
                  << "maxSrcUdp:            " << maxSrcUdp << '\n'
180
 
                  << "kadFindValue:         " << kadFindValue << '\n'
181
 
                  << "kadStore:             " << kadStore << '\n'
182
 
                  << "kadFindNode:          " << kadFindNode << '\n'
183
 
                  << "kadReaskTime:         " << kadReaskTime << '\n'
184
 
                  << "kadReaskIncs:         " << kadReaskIncs << '\n'
185
 
                  << "kadPubTime:           " << kadPubTime << '\n'
186
 
                  << "mVer:                 " << mVer << '\n'
187
 
                  << "opcodes Norm:         " << std::hex << (unsigned short) kadOpcode << '\n'
188
 
                  << "Zip:                  " << std::hex << (unsigned short) kadZOpcode << std::dec << '\n'
189
 
                  << "- nextUpdate in:      " << nextUpdate-time(NULL) << " seconds\n"
190
 
                  << "- expireTime:         " << expireTime << '\n'
191
 
                  << "- recheckTime:        " << recheckTime << '\n'
192
 
                  << "failCount:            " << failCount << '\n'
193
 
                  << "updating from:        " << (const char*)unicode2char(UpdateURL) << '\n';
 
176
        std::cout << "kadRepublishTimeK:     " << m_KADUSettings.m_kadRepublishTimeK << '\n'
 
177
                  << "kadRepublishTimeS:     " << m_KADUSettings.m_kadRepublishTimeS << '\n'
 
178
                  << "kadRepublishTimeN:     " << m_KADUSettings.m_kadRepublishTimeN << '\n'
 
179
                  << "kadIndexLifeK:         " << m_KADUSettings.m_kadIndexLifeK << '\n' // Mr Hyde all. eMule Adu 3.15b74
 
180
                  << "kadIndexLifeS:         " << m_KADUSettings.m_kadIndexLifeS << '\n' // Mr Hyde all. eMule Adu 3.15b74
 
181
                  << "kadTotalStoreKey:      " << m_KADUSettings.m_kadTotalStoreKey << '\n'
 
182
                  << "kadTotalStoreSrc:      " << m_KADUSettings.m_kadTotalStoreSrc << '\n'
 
183
                  << "kadTotalStoreNotes:    " << m_KADUSettings.m_kadTotalStoreNotes << '\n'
 
184
                  << "kadTotalSearchFile:    " << m_KADUSettings.m_kadTotalSearchFile << '\n'
 
185
                  << "kadMaxSrcFile:         " << m_KADUSettings.m_kadMaxSrcFile << '\n'
 
186
                  << "kadMaxNotFile:         " << m_KADUSettings.m_kadMaxNotFile << '\n'
 
187
                  << "kadFreshGuess_Tol:     " << m_KADUSettings.m_kadFreshGuess_Tol << '\n'
 
188
                  << "kadFreshGuess_Weight:  " << m_KADUSettings.m_kadFreshGuess_Weight << '\n'
 
189
                  << "kadFreshGuess_LowNorm: " << m_KADUSettings.m_kadFreshGuess_LowNorm << '\n'
 
190
                  << "kadFreshGuess_NoNorm: " << m_KADUSettings.m_kadFreshGuess_NoNorm << '\n'
 
191
                  << "maxSrc:               " << m_maxSrc << '\n'
 
192
                  << "maxSrcUdp:            " << m_maxSrcUdp << '\n'
 
193
                  << "kadFindValue:         " << m_KADUSettings.m_kadFindValue << '\n'
 
194
                  << "kadStore:             " << m_KADUSettings.m_kadStore << '\n'
 
195
                  << "kadFindNode:          " << m_KADUSettings.m_kadFindNode << '\n'
 
196
                  << "kadReaskTime:         " << m_KADUSettings.m_kadReaskTime << '\n'
 
197
                  << "kadReaskIncs:         " << m_KADUSettings.m_kadReaskIncs << '\n'
 
198
                  << "kadPubTime:           " << m_KADUSettings.m_kadPubTime << '\n'
 
199
                  << "mVer:                 " << m_KADUSettings.m_mVer << '\n'
 
200
                  << "opcodes Norm:         " << std::hex << (unsigned short) m_KADUSettings.m_kadOpcode << '\n'
 
201
                  << "Zip:                  " << std::hex << (unsigned short) m_KADUSettings.m_kadZOpcode << std::dec << '\n'
 
202
                  << "- nextUpdate in:      " << m_nextUpdate-time(NULL) << " seconds\n"
 
203
                  << "- expireTime:         " << m_expireTime << '\n'
 
204
                  << "- recheckTime:        " << m_recheckTime << '\n'
 
205
                  << "failCount:            " << m_failCount << '\n'
 
206
                  << "AduValRipBanda_Std:   " << m_AduValRipBanda_Std << '\n' // Mr Hyde allineamento 3.16, ripartitore banda
 
207
                  << "updating from:        " << (const char*)unicode2char(m_UpdateURL) << '\n';
194
208
 
195
209
                // Mr Hyde allineamento eMule 3.15 (mods da bannare)
196
210
                if (m_badMods.empty())
215
229
}
216
230
 
217
231
void CRemoteSettings::ReadSettings(const wxConfigBase& docfg) {
218
 
        docfg.Read(wxT("/Adunanza/expireTime") , &expireTime, expireTime);
219
 
        docfg.Read(wxT("/Adunanza/recheckTime") , &recheckTime, recheckTime);
220
 
        docfg.Read(wxT("/Adunanza/UpdateURL") , &UpdateURL, UpdateURL);
221
 
 
222
 
        if (expireTime > RSEXPIRETIME)
223
 
                expireTime = RSEXPIRETIME;
224
 
 
225
 
        if (recheckTime > RSRECHECKTIME)
226
 
                recheckTime = RSRECHECKTIME;
 
232
        long          kadRepublishTimeK = theApp->get_kadRepublishTimeK()  ;
 
233
        long          kadRepublishTimeS = theApp->get_kadRepublishTimeS()  ;
 
234
        long          kadRepublishTimeN = theApp->get_kadRepublishTimeN()  ;
 
235
 
 
236
        long          kadIndexLifeK = theApp->get_kadIndexLifeK()  ; // Mr Hyde per allineamento a eMule 3.15b74
 
237
        long          kadIndexLifeS = theApp->get_kadIndexLifeS()  ; // Mr Hyde per allineamento a eMule 3.15b74
 
238
 
 
239
        uint32_t      kadTotalStoreKey = theApp->get_kadTotalStoreKey()  ;   // Mr Hyde: cambiato da long a uint32_t in accordo con kademlia.h
 
240
        uint32_t      kadTotalStoreSrc = theApp->get_kadTotalStoreSrc()  ;   // Mr Hyde: cambiato da long a uint32_t in accordo con kademlia.h
 
241
        uint32_t      kadTotalStoreNotes = theApp->get_kadTotalStoreNotes()  ; // Mr Hyde: cambiato da long a uint32_t in accordo con kademlia.h
 
242
 
 
243
        long          kadTotalSearchFile = theApp->get_kadTotalSearchFile()  ;
 
244
 
 
245
        long          kadMaxSrcFile = theApp->get_kadMaxSrcFile()  ;
 
246
        long          kadMaxNotFile = theApp->get_kadMaxNotFile()  ;
 
247
 
 
248
        double        kadFreshGuess_Tol = theApp->get_kadFreshGuess_Tol()  ;
 
249
        double        kadFreshGuess_Weight = theApp->get_kadFreshGuess_Weight()  ;
 
250
        long          kadFreshGuess_NoNorm = theApp->get_kadFreshGuess_NoNorm()  ;
 
251
        long          kadFreshGuess_LowNorm = theApp->get_kadFreshGuess_LowNorm()  ;
 
252
 
 
253
        long          kadFindValue = theApp->get_kadFindValue()  ;
 
254
        long          kadStore = theApp->get_kadStore()  ;
 
255
        long          kadFindNode = theApp->get_kadFindNode()  ;
 
256
 
 
257
        long          kadReaskTime = theApp->get_kadReaskTime()  ;
 
258
        long          kadPubTime = theApp->get_kadPubTime()  ;
 
259
 
 
260
        long          kadReaskIncs = theApp->get_kadReaskIncs()  ;
 
261
 
 
262
        long          mVer = theApp->get_mVer()  ;
 
263
 
 
264
        unsigned char kadOpcode = theApp->get_kadOpcode()  ;
 
265
        unsigned char kadZOpcode = theApp->get_kadZOpcode()  ;
 
266
 
 
267
 
 
268
 
 
269
        docfg.Read(wxT("/Adunanza/expireTime") , &m_expireTime, m_expireTime);
 
270
        docfg.Read(wxT("/Adunanza/recheckTime") , &m_recheckTime, m_recheckTime);
 
271
        docfg.Read(wxT("/Adunanza/UpdateURL") , &m_UpdateURL, m_UpdateURL);
 
272
 
 
273
        if (m_expireTime > RSEXPIRETIME) m_expireTime = RSEXPIRETIME;
 
274
 
 
275
        if (m_recheckTime > RSRECHECKTIME) m_recheckTime = RSRECHECKTIME;
227
276
 
228
277
        docfg.Read(wxT("/Adunanza/kadRepublishTimeK") , &kadRepublishTimeK, kadRepublishTimeK);
229
278
        docfg.Read(wxT("/Adunanza/kadRepublishTimeS") , &kadRepublishTimeS, kadRepublishTimeS);
235
284
        long long_kadTotalStoreKey   = 0;
236
285
        long long_kadTotalStoreSrc   = 0;
237
286
        long long_kadTotalStoreNotes = 0;
238
 
        docfg.Read(wxT("/Adunanza/kadTotalStoreKey") , &long_kadTotalStoreKey, long_kadTotalStoreKey);
239
 
        docfg.Read(wxT("/Adunanza/kadTotalStoreSrc") , &long_kadTotalStoreSrc, long_kadTotalStoreSrc);
 
287
        long long_AduValRipBanda_Std = ADUNANZA_DEF_BW_EXT; // Mr Hyde allineamento 3.16, ripartitore banda
 
288
 
 
289
        docfg.Read(wxT("/Adunanza/kadTotalStoreKey")   , &long_kadTotalStoreKey,   long_kadTotalStoreKey);
 
290
        docfg.Read(wxT("/Adunanza/kadTotalStoreSrc")   , &long_kadTotalStoreSrc,   long_kadTotalStoreSrc);
240
291
        docfg.Read(wxT("/Adunanza/kadTotalStoreNotes") , &long_kadTotalStoreNotes, long_kadTotalStoreNotes);
241
 
        kadTotalStoreKey   = static_cast<uint32_t>(long_kadTotalStoreKey);
242
 
        kadTotalStoreSrc   = static_cast<uint32_t>(long_kadTotalStoreSrc);
243
 
        kadTotalStoreNotes = static_cast<uint32_t>(long_kadTotalStoreNotes);
 
292
        docfg.Read(wxT("/Adunanza/AduValRipBandaStd")  , &long_AduValRipBanda_Std, long_AduValRipBanda_Std); // Mr Hyde allineamento 3.16, ripartitore banda
244
293
 
 
294
        kadTotalStoreKey     = static_cast<uint32_t>(long_kadTotalStoreKey);
 
295
        kadTotalStoreSrc     = static_cast<uint32_t>(long_kadTotalStoreSrc);
 
296
        kadTotalStoreNotes   = static_cast<uint32_t>(long_kadTotalStoreNotes);
 
297
        m_AduValRipBanda_Std = static_cast<uint32_t>(long_AduValRipBanda_Std); // Mr Hyde allineamento 3.16, ripartitore banda
 
298
        
245
299
        docfg.Read(wxT("/Adunanza/kadTotalSearchFile") , &kadTotalSearchFile, kadTotalSearchFile);
246
 
 
 
300
        
247
301
        docfg.Read(wxT("/Adunanza/kadMaxSrcFile") , &kadMaxSrcFile, kadMaxSrcFile);
248
302
        docfg.Read(wxT("/Adunanza/kadMaxNotFile") , &kadMaxNotFile, kadMaxNotFile);
249
303
 
252
306
        docfg.Read(wxT("/Adunanza/kadFreshGuess_LowNorm") , &kadFreshGuess_LowNorm, kadFreshGuess_LowNorm);
253
307
        docfg.Read(wxT("/Adunanza/kadFreshGuess_NoNorm") , &kadFreshGuess_NoNorm, kadFreshGuess_NoNorm);
254
308
 
255
 
        docfg.Read(wxT("/Adunanza/maxSrc") , &maxSrc, maxSrc);
256
 
        docfg.Read(wxT("/Adunanza/maxSrcUdp") , &maxSrcUdp, maxSrcUdp);
 
309
        docfg.Read(wxT("/Adunanza/maxSrc") , &m_maxSrc, m_maxSrc);
 
310
        docfg.Read(wxT("/Adunanza/maxSrcUdp") , &m_maxSrcUdp, m_maxSrcUdp);
257
311
 
258
312
        docfg.Read(wxT("/Adunanza/kadFindValue") , &kadFindValue, kadFindValue);
259
313
        docfg.Read(wxT("/Adunanza/kadStore") , &kadStore, kadStore);
277
331
                // le mod sono separatre dal carattere ";" (punto e virgola)
278
332
                wxString modName;
279
333
                wxStringTokenizer tkz(allBadMods, wxT(";"));
280
 
                while ( tkz.HasMoreTokens() )
281
 
                {
 
334
                while ( tkz.HasMoreTokens() ) {
282
335
                        wxString token = tkz.GetNextToken();
283
336
                        m_badMods.push_back(token);
284
337
                }
285
338
        }
286
 
        
 
339
 
 
340
        m_KADUSettings.assign(kadRepublishTimeK,
 
341
                                kadRepublishTimeS,
 
342
                                kadRepublishTimeN,
 
343
                                kadIndexLifeK,
 
344
                                kadIndexLifeS,
 
345
                                kadTotalStoreKey,
 
346
                                kadTotalStoreSrc,
 
347
                                kadTotalStoreNotes,
 
348
                                kadTotalSearchFile,
 
349
                                kadMaxSrcFile,
 
350
                                kadMaxNotFile,
 
351
                                kadFreshGuess_Tol,
 
352
                                kadFreshGuess_Weight,
 
353
                                kadFreshGuess_NoNorm,
 
354
                                kadFreshGuess_LowNorm,
 
355
                                kadFindValue,
 
356
                                kadStore,
 
357
                                kadFindNode,
 
358
                                kadReaskTime,
 
359
                                kadPubTime,
 
360
                                kadReaskIncs,
 
361
                                mVer,
 
362
                                kadOpcode,
 
363
                                kadZOpcode);
 
364
 
 
365
/* 
 
366
QUESTO NON POSSO CHIAMARLO QUI: le statistiche potrebbero non essere ancora partite
 
367
e io avrei un errore di lock. Vedo di chiamarlo in amule.cpp
 
368
Devo studiare il come ri-farlo quando viene ricaricato RemoteSettings ciclicamente
 
369
 
 
370
        // Per ripartitore di banda: mi assicuro di calcolare i Ratio
 
371
        if (thePrefs::ADU_GetRipBanda()) {
 
372
                thePrefs::ADU_SetValueRipBanda(m_AduValRipBanda_Std);
 
373
        }       
 
374
        CAdunanzAUtilities::CalcolaRatio(false);
 
375
*/
287
376
}
288
377
 
289
378
void CRemoteSettings::SaveSettings() {
290
 
        if (!cfg) return; // Mr Hyde
291
 
        cfg->Write(wxT("/Adunanza/nextUpdate") , wxString::Format(wxT("%ul"),nextUpdate));
292
 
        cfg->Write(wxT("/Adunanza/failCount") , failCount);
293
 
        cfg->Write(wxT("/Adunanza/UpdateURL") , UpdateURL);
294
 
        cfg->Write(wxT("/Adunanza/expireTime") , expireTime);
295
 
        cfg->Write(wxT("/Adunanza/recheckTime") , recheckTime);
296
 
 
297
 
        cfg->Write(wxT("/Adunanza/kadRepublishTimeK") , kadRepublishTimeK);
298
 
        cfg->Write(wxT("/Adunanza/kadRepublishTimeS") , kadRepublishTimeS);
299
 
        cfg->Write(wxT("/Adunanza/kadRepublishTimeN") , kadRepublishTimeN);
300
 
 
301
 
        cfg->Write(wxT("/Adunanza/kadIndexLifeK") , kadIndexLifeK); // Mr Hyde all emule Adu 3.15b74
302
 
        cfg->Write(wxT("/Adunanza/kadIndexLifeS") , kadIndexLifeS); // Mr Hyde all emule Adu 3.15b74
303
 
 
304
 
        long long_kadTotalStoreKey   = static_cast<long>(kadTotalStoreKey);
305
 
        long long_kadTotalStoreSrc   = static_cast<long>(kadTotalStoreSrc);
306
 
        long long_kadTotalStoreNotes = static_cast<long>(kadTotalStoreNotes);
307
 
        cfg->Write(wxT("/Adunanza/kadTotalStoreKey") ,   long_kadTotalStoreKey);
308
 
        cfg->Write(wxT("/Adunanza/kadTotalStoreSrc") ,   long_kadTotalStoreSrc);
309
 
        cfg->Write(wxT("/Adunanza/kadTotalStoreNotes") , long_kadTotalStoreNotes);
310
 
 
311
 
        cfg->Write(wxT("/Adunanza/kadTotalSearchFile") , kadTotalSearchFile);
312
 
 
313
 
        cfg->Write(wxT("/Adunanza/kadMaxSrcFile") , kadMaxSrcFile);
314
 
        cfg->Write(wxT("/Adunanza/kadMaxNotFile") , kadMaxNotFile);
315
 
 
316
 
        cfg->Write(wxT("/Adunanza/kadFreshGuess_Tol") , (long)(kadFreshGuess_Tol * 10000));
317
 
        cfg->Write(wxT("/Adunanza/kadFreshGuess_Weight") , (long)(kadFreshGuess_Weight * 10000));
318
 
        cfg->Write(wxT("/Adunanza/kadFreshGuess_LowNorm") , kadFreshGuess_LowNorm);
319
 
        cfg->Write(wxT("/Adunanza/kadFreshGuess_NoNorm") , kadFreshGuess_NoNorm);
320
 
 
321
 
        cfg->Write(wxT("/Adunanza/maxSrc") , maxSrc);
322
 
        cfg->Write(wxT("/Adunanza/maxSrcUdp") , maxSrcUdp);
323
 
 
324
 
        cfg->Write(wxT("/Adunanza/kadFindValue") , kadFindValue);
325
 
        cfg->Write(wxT("/Adunanza/kadStore") , kadStore);
326
 
        cfg->Write(wxT("/Adunanza/kadFindNode") , kadFindNode);
327
 
 
328
 
        cfg->Write(wxT("/Adunanza/kadReaskTime") , kadReaskTime);
329
 
        cfg->Write(wxT("/Adunanza/kadReaskIncs") , kadReaskIncs);
330
 
        cfg->Write(wxT("/Adunanza/kadPubTime") , kadPubTime);
331
 
        cfg->Write(wxT("/Adunanza/mVer") , mVer);
332
 
 
333
 
        cfg->Write(wxT("/Adunanza/kadOpcode"), (long)kadOpcode);
334
 
        cfg->Write(wxT("/Adunanza/kadZOpcode"), (long)kadZOpcode);
335
 
 
336
 
        if (!m_badMods.empty())
337
 
        {
 
379
        // e' assurdo tenere aperto il file di configurazione per tutto il tempo,
 
380
        // queste NON sono le preferenze.
 
381
        //
 
382
 
 
383
        if (!m_pFileConfig) return; // Mr Hyde
 
384
        m_pFileConfig->Write(wxT("/Adunanza/nextUpdate") , wxString::Format(wxT("%ul"),m_nextUpdate));
 
385
        m_pFileConfig->Write(wxT("/Adunanza/failCount") , m_failCount);
 
386
        m_pFileConfig->Write(wxT("/Adunanza/UpdateURL") , m_UpdateURL);
 
387
        m_pFileConfig->Write(wxT("/Adunanza/expireTime") , m_expireTime);
 
388
        m_pFileConfig->Write(wxT("/Adunanza/recheckTime") , m_recheckTime);
 
389
 
 
390
        m_pFileConfig->Write(wxT("/Adunanza/kadRepublishTimeK") , theApp->get_kadRepublishTimeK());
 
391
        m_pFileConfig->Write(wxT("/Adunanza/kadRepublishTimeS") , theApp->get_kadRepublishTimeS());
 
392
        m_pFileConfig->Write(wxT("/Adunanza/kadRepublishTimeN") , theApp->get_kadRepublishTimeN());
 
393
 
 
394
        m_pFileConfig->Write(wxT("/Adunanza/kadIndexLifeK") , theApp->get_kadIndexLifeK()); // Mr Hyde all emule Adu 3.15b74
 
395
        m_pFileConfig->Write(wxT("/Adunanza/kadIndexLifeS") , theApp->get_kadIndexLifeS()); // Mr Hyde all emule Adu 3.15b74
 
396
 
 
397
        long long_kadTotalStoreKey   = static_cast<long>(theApp->get_kadTotalStoreKey());
 
398
        long long_kadTotalStoreSrc   = static_cast<long>(theApp->get_kadTotalStoreSrc());
 
399
        long long_kadTotalStoreNotes = static_cast<long>(theApp->get_kadTotalStoreNotes());
 
400
        long long_AduValRipBanda_Std = static_cast<long>(m_AduValRipBanda_Std); // Mr Hyde allineamento 3.16, riparitore banda
 
401
 
 
402
        m_pFileConfig->Write(wxT("/Adunanza/kadTotalStoreKey") ,   long_kadTotalStoreKey);
 
403
        m_pFileConfig->Write(wxT("/Adunanza/kadTotalStoreSrc") ,   long_kadTotalStoreSrc);
 
404
        m_pFileConfig->Write(wxT("/Adunanza/kadTotalStoreNotes") , long_kadTotalStoreNotes);
 
405
        m_pFileConfig->Write(wxT("/Adunanza/AduValRipBanda")     , long_AduValRipBanda_Std); // Mr Hyde allineamento 3.16, riparitore banda
 
406
 
 
407
        m_pFileConfig->Write(wxT("/Adunanza/kadTotalSearchFile") , theApp->get_kadTotalSearchFile());
 
408
 
 
409
        m_pFileConfig->Write(wxT("/Adunanza/kadMaxSrcFile") , theApp->get_kadMaxSrcFile());
 
410
        m_pFileConfig->Write(wxT("/Adunanza/kadMaxNotFile") , theApp->get_kadMaxNotFile());
 
411
 
 
412
        m_pFileConfig->Write(wxT("/Adunanza/kadFreshGuess_Tol") , (long)(theApp->get_kadFreshGuess_Tol() * 10000));
 
413
        m_pFileConfig->Write(wxT("/Adunanza/kadFreshGuess_Weight") , (long)(theApp->get_kadFreshGuess_Weight() * 10000));
 
414
        m_pFileConfig->Write(wxT("/Adunanza/kadFreshGuess_LowNorm") , theApp->get_kadFreshGuess_LowNorm());
 
415
        m_pFileConfig->Write(wxT("/Adunanza/kadFreshGuess_NoNorm") , theApp->get_kadFreshGuess_NoNorm());
 
416
 
 
417
        m_pFileConfig->Write(wxT("/Adunanza/maxSrc") , m_maxSrc);
 
418
        m_pFileConfig->Write(wxT("/Adunanza/maxSrcUdp") , m_maxSrcUdp);
 
419
 
 
420
        m_pFileConfig->Write(wxT("/Adunanza/kadFindValue") , theApp->get_kadFindValue());
 
421
        m_pFileConfig->Write(wxT("/Adunanza/kadStore") , theApp->get_kadStore());
 
422
        m_pFileConfig->Write(wxT("/Adunanza/kadFindNode") , theApp->get_kadFindNode());
 
423
 
 
424
        m_pFileConfig->Write(wxT("/Adunanza/kadReaskTime") , theApp->get_kadReaskTime());
 
425
        m_pFileConfig->Write(wxT("/Adunanza/kadReaskIncs") , theApp->get_kadReaskIncs());
 
426
        m_pFileConfig->Write(wxT("/Adunanza/kadPubTime") , theApp->get_kadPubTime());
 
427
        m_pFileConfig->Write(wxT("/Adunanza/mVer") , theApp->get_mVer());
 
428
 
 
429
        m_pFileConfig->Write(wxT("/Adunanza/kadOpcode"), (long)theApp->get_kadOpcode());
 
430
        m_pFileConfig->Write(wxT("/Adunanza/kadZOpcode"), (long)theApp->get_kadZOpcode());
 
431
 
 
432
        if (!m_badMods.empty()) {
338
433
                wxString tmpBadMods;
339
434
                unsigned int i;
340
 
                for (i = 0; i < (m_badMods.size() - 1); i++)
341
 
                {
 
435
                for (i = 0; i < (m_badMods.size() - 1); i++) {
342
436
                        tmpBadMods << m_badMods[i] << wxChar(';');
343
437
                }
344
438
                tmpBadMods << m_badMods[i];
345
 
                cfg->Write(wxT("/Adunanza/modstringban") , tmpBadMods);
 
439
                m_pFileConfig->Write(wxT("/Adunanza/modstringban") , tmpBadMods);
346
440
        }
347
441
 
348
442
}
349
443
 
350
444
void CRemoteSettings::CheckUpdate() {
351
 
        if (time(NULL) < (time_t)nextUpdate)
 
445
        if (time(NULL) < (time_t)m_nextUpdate)
352
446
                return;
353
447
 
354
448
        //printf("---------------- Before update -----------------\n");
355
449
        //PrintAllValues();
356
450
 
357
 
        wxString strURL(UpdateURL);
 
451
        wxString strURL(m_UpdateURL);
358
452
 
359
453
        if (wxURL(strURL).GetError() == wxURL_NOERR) { // Mr Hyde: validate URL
360
 
                wxString tmpFile(ConfigDir + wxT(ADURM_TMPFILE));
 
454
                wxString tmpFile(m_configDir + wxT(ADURM_TMPFILE));
361
455
                if (wxFileExists(tmpFile)) {
362
456
                        wxRemoveFile(tmpFile);
363
457
                }
374
468
}
375
469
 
376
470
void CRemoteSettings::FileDownloadedCallback(int result) {
 
471
        // wxMutexLocker rmLock(m_mutex); // Mr Hyde: per evitare casini di accessi concorrenti
377
472
        //printf("---------------- Before update (2) ----------------- result: %d\n",result);
378
473
        //PrintAllValues();
379
474
 
380
475
        if (result == -1) {
381
476
                double scaled = rand() / (RAND_MAX + 1.0);
382
 
                nextUpdate = time(NULL) + (time_t)recheckTime + (time_t)((recheckTime + 1) * scaled);
383
 
                failCount++;
384
 
                if (failCount > FAILCHECKSTATIC) {
385
 
                        UpdateURL = wxT(ADURM_URL);
 
477
                m_nextUpdate = time(NULL) + (time_t) m_recheckTime + (time_t)((m_recheckTime + 1) * scaled);
 
478
                m_failCount++;
 
479
                if (m_failCount > FAILCHECKSTATIC) {
 
480
                        m_UpdateURL = wxT(ADURM_URL); // perche' sta cosa??? cosi' salvo sempre la costante e mai il valore eventualmente letto dal file scaricato da remoto!
386
481
                        SaveSettings();
387
482
                }
388
483
                return;
389
484
        }
390
485
 
391
 
        wxString tmpFile(ConfigDir + wxT(ADURM_TMPFILE));
 
486
        wxString tmpFile(m_configDir + wxT(ADURM_TMPFILE));
392
487
        if (!wxFileExists(tmpFile))
393
488
                return;
394
489
 
409
504
                std::cerr << "Something of wrong in CRemoteSettings::FileDownloadedCallback" << std::endl;
410
505
        }
411
506
 
412
 
        nextUpdate = time(NULL) + (time_t)expireTime;
413
 
        failCount = 0;
 
507
        m_nextUpdate = time(NULL) + (time_t) m_expireTime;
 
508
        m_failCount = 0;
414
509
 
415
510
        std::cout << "---------------- After update -----------------" << std::endl;
416
511
        PrintAllValues();