mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-22 04:04:16 +00:00
avoid unnececssary recusion
This commit is contained in:
parent
8d98722b46
commit
0e5bbfa21c
30
NetDb.cpp
30
NetDb.cpp
@ -63,6 +63,13 @@ namespace data
|
|||||||
void NetDb::Start ()
|
void NetDb::Start ()
|
||||||
{
|
{
|
||||||
Load ("netDb");
|
Load ("netDb");
|
||||||
|
while (m_RouterInfos.size () < 100 && m_ReseedRetries < 10)
|
||||||
|
{
|
||||||
|
Reseeder reseeder;
|
||||||
|
reseeder.reseedNow();
|
||||||
|
m_ReseedRetries++;
|
||||||
|
Load ("netDb");
|
||||||
|
}
|
||||||
m_Thread = new std::thread (std::bind (&NetDb::Run, this));
|
m_Thread = new std::thread (std::bind (&NetDb::Run, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,26 +212,21 @@ namespace data
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetDb::Load (const char * directory)
|
void NetDb::Load (const char * directory)
|
||||||
{
|
{
|
||||||
Load(directory, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetDb::Load (const char * directory, bool reseed)
|
|
||||||
{
|
|
||||||
i2p::data::Reseeder *reseeder = new i2p::data::Reseeder();
|
|
||||||
boost::filesystem::path p (directory);
|
boost::filesystem::path p (directory);
|
||||||
if (!boost::filesystem::exists (p))
|
if (!boost::filesystem::exists (p))
|
||||||
{
|
{
|
||||||
|
// seems netDb doesn't exist yet
|
||||||
if (!CreateNetDb(directory)) return;
|
if (!CreateNetDb(directory)) return;
|
||||||
reseeder->reseedNow();
|
|
||||||
}
|
|
||||||
if (reseed)
|
|
||||||
{
|
|
||||||
reseeder->reseedNow();
|
|
||||||
m_ReseedRetries++;
|
|
||||||
}
|
}
|
||||||
|
// make sure we cleanup netDb from previous attempts
|
||||||
|
for (auto r: m_RouterInfos)
|
||||||
|
delete r.second;
|
||||||
|
m_RouterInfos.clear ();
|
||||||
|
|
||||||
|
// load routers now
|
||||||
int numRouters = 0;
|
int numRouters = 0;
|
||||||
boost::filesystem::directory_iterator end;
|
boost::filesystem::directory_iterator end;
|
||||||
for (boost::filesystem::directory_iterator it (p); it != end; ++it)
|
for (boost::filesystem::directory_iterator it (p); it != end; ++it)
|
||||||
@ -244,8 +246,6 @@ namespace data
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
LogPrint (numRouters, " routers loaded");
|
LogPrint (numRouters, " routers loaded");
|
||||||
if (numRouters < 100 && m_ReseedRetries < 10)
|
|
||||||
Load(directory, true); // Reseed
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetDb::SaveUpdated (const char * directory)
|
void NetDb::SaveUpdated (const char * directory)
|
||||||
|
1
NetDb.h
1
NetDb.h
@ -78,7 +78,6 @@ namespace data
|
|||||||
|
|
||||||
bool CreateNetDb(const char * directory);
|
bool CreateNetDb(const char * directory);
|
||||||
void Load (const char * directory);
|
void Load (const char * directory);
|
||||||
void Load (const char * directory, bool reseed);
|
|
||||||
void SaveUpdated (const char * directory);
|
void SaveUpdated (const char * directory);
|
||||||
void Run (); // exploratory thread
|
void Run (); // exploratory thread
|
||||||
void Explore ();
|
void Explore ();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user