|
|
|
@ -78,11 +78,18 @@ void CYsfNodeDir::Thread()
|
|
|
|
while (keep_running)
|
|
|
|
while (keep_running)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Wait YSFNODEDB_REFRESH_RATE minutes
|
|
|
|
// Wait YSFNODEDB_REFRESH_RATE minutes
|
|
|
|
for (int i=0; i<30*YSFNODEDB_REFRESH_RATE && keep_running; i++)
|
|
|
|
for (int i=0; keep_running && (i < 30*YSFNODEDB_REFRESH_RATE); i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
CTimePoint::TaskSleepFor(2000);
|
|
|
|
CTimePoint::TaskSleepFor(2000);
|
|
|
|
|
|
|
|
#if YSF_DB_SUPPORT==true
|
|
|
|
|
|
|
|
if (keep_running && (0 == i % 450))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ReadDb(); // update from the db every 15 minutes
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
// have lists files changed ?
|
|
|
|
// have lists files changed ?
|
|
|
|
if ( NeedReload() )
|
|
|
|
if (keep_running && NeedReload())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Reload();
|
|
|
|
Reload();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -100,7 +107,7 @@ bool CYsfNodeDir::Reload(void)
|
|
|
|
if ( LoadContent(&buffer) )
|
|
|
|
if ( LoadContent(&buffer) )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Lock();
|
|
|
|
Lock();
|
|
|
|
ok = RefreshContent(buffer) && ReadDb();
|
|
|
|
ok = RefreshContent(buffer);
|
|
|
|
Unlock();
|
|
|
|
Unlock();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return ok;
|
|
|
|
return ok;
|
|
|
|
@ -126,10 +133,9 @@ bool CYsfNodeDir::FindFrequencies(const CCallsign &callsign, uint32 *txfreq, uin
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CYsfNodeDir::ReadDb()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
#if YSF_DB_SUPPORT==true
|
|
|
|
#if YSF_DB_SUPPORT==true
|
|
|
|
bool rval = false;
|
|
|
|
void CYsfNodeDir::ReadDb()
|
|
|
|
|
|
|
|
{
|
|
|
|
MYSQL *con = mysql_init(NULL);
|
|
|
|
MYSQL *con = mysql_init(NULL);
|
|
|
|
if (con)
|
|
|
|
if (con)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -140,7 +146,6 @@ bool CYsfNodeDir::ReadDb()
|
|
|
|
MYSQL_RES *result = mysql_store_result(con);
|
|
|
|
MYSQL_RES *result = mysql_store_result(con);
|
|
|
|
if (result)
|
|
|
|
if (result)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
rval = true;
|
|
|
|
|
|
|
|
std::cout << "Adding " << mysql_num_rows(result) << " registered YSF stations from table " << YSF_DB_NAME << std::endl;
|
|
|
|
std::cout << "Adding " << mysql_num_rows(result) << " registered YSF stations from table " << YSF_DB_NAME << std::endl;
|
|
|
|
MYSQL_ROW row;
|
|
|
|
MYSQL_ROW row;
|
|
|
|
|
|
|
|
|
|
|
|
@ -148,8 +153,7 @@ bool CYsfNodeDir::ReadDb()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
CCallsign cs(row[0]);
|
|
|
|
CCallsign cs(row[0]);
|
|
|
|
CYsfNode node(atoi(row[1]), atoi(row[2]));
|
|
|
|
CYsfNode node(atoi(row[1]), atoi(row[2]));
|
|
|
|
std::pair<CCallsign, CYsfNode> pair(cs, node);
|
|
|
|
m_map[cs] = node;
|
|
|
|
insert(pair);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
mysql_free_result(result);
|
|
|
|
mysql_free_result(result);
|
|
|
|
@ -172,11 +176,7 @@ bool CYsfNodeDir::ReadDb()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
std::cerr << "Could not init mysql." << std::endl;
|
|
|
|
std::cerr << "Could not init mysql." << std::endl;;
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return rval;
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|