Browse Source

avoid unnececssary recusion

pull/21/head
orignal 11 years ago
parent
commit
0e5bbfa21c
  1. 30
      NetDb.cpp
  2. 1
      NetDb.h

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)
{
Load(directory, false);
}
void NetDb::Load (const char * directory, bool reseed) void NetDb::Load (const char * directory)
{ {
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

@ -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…
Cancel
Save