mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 09:34:19 +00:00
Thread safe /load without paramters
This commit is contained in:
parent
7514e93a8a
commit
f5ebbf59b6
|
@ -1760,19 +1760,13 @@ bool CSqlScore::LoadTeamThread(CSqlServer* pSqlServer, const CSqlData<CSqlResult
|
||||||
|
|
||||||
void CSqlScore::GetSaves(int ClientID)
|
void CSqlScore::GetSaves(int ClientID)
|
||||||
{
|
{
|
||||||
/*
|
ExecPlayerThread(GetSavesThread, "get saves", ClientID, "", 0);
|
||||||
CSqlGetSavesData *Tmp = new CSqlGetSavesData();
|
|
||||||
Tmp->m_ClientID = ClientID;
|
|
||||||
Tmp->m_Name = Server()->ClientName(ClientID);
|
|
||||||
|
|
||||||
thread_init_and_detach(ExecSqlFunc, new CSqlExecData(GetSavesThread, Tmp, false), "get saves");
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
||||||
{
|
{
|
||||||
/*
|
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
||||||
const CSqlGetSavesData *pData = dynamic_cast<const CSqlGetSavesData *>(pGameData);
|
auto paMessages = pData->m_pResult->m_aaMessages;
|
||||||
|
|
||||||
if (HandleFailure)
|
if (HandleFailure)
|
||||||
return true;
|
return true;
|
||||||
|
@ -1781,7 +1775,15 @@ bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayer
|
||||||
{
|
{
|
||||||
char aBuf[512];
|
char aBuf[512];
|
||||||
|
|
||||||
str_format(aBuf, sizeof(aBuf), "SELECT count(*) as NumSaves, UNIX_TIMESTAMP(CURRENT_TIMESTAMP)-UNIX_TIMESTAMP(max(Timestamp)) as Ago FROM %s_saves WHERE Map='%s' AND Savegame regexp '\\n%s\\t';", pSqlServer->GetPrefix(), pData->m_Map.ClrStr(), pData->m_Name.ClrStr());
|
str_format(aBuf, sizeof(aBuf),
|
||||||
|
"SELECT COUNT(*) as NumSaves, "
|
||||||
|
"UNIX_TIMESTAMP(CURRENT_TIMESTAMP)-UNIX_TIMESTAMP(max(Timestamp)) as Ago "
|
||||||
|
"FROM %s_saves "
|
||||||
|
"WHERE Map='%s' AND Savegame regexp '\\n%s\\t';",
|
||||||
|
pSqlServer->GetPrefix(),
|
||||||
|
pData->m_Map.ClrStr(),
|
||||||
|
pData->m_RequestingPlayer.ClrStr()
|
||||||
|
);
|
||||||
pSqlServer->executeSqlQuery(aBuf);
|
pSqlServer->executeSqlQuery(aBuf);
|
||||||
if(pSqlServer->GetResults()->next())
|
if(pSqlServer->GetResults()->next())
|
||||||
{
|
{
|
||||||
|
@ -1796,11 +1798,14 @@ bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayer
|
||||||
str_format(aLastSavedString, sizeof(aLastSavedString), ", last saved %s ago", aAgoString);
|
str_format(aLastSavedString, sizeof(aLastSavedString), ", last saved %s ago", aAgoString);
|
||||||
}
|
}
|
||||||
|
|
||||||
str_format(pData->m_pResult->m_Message,
|
str_format(paMessages[0], sizeof(paMessages[0]),
|
||||||
sizeof(pData->m_pResult->m_Message),
|
"%s has %d save%s on %s%s",
|
||||||
"%s has %d save%s on %s%s", pData->m_Name.Str(), NumSaves, NumSaves == 1 ? "" : "s", pData->m_Map.Str(), aLastSavedString);
|
pData->m_RequestingPlayer.Str(),
|
||||||
|
NumSaves, NumSaves == 1 ? "" : "s",
|
||||||
|
pData->m_Map.Str(), aLastSavedString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pData->m_pResult->m_Done = true;
|
||||||
dbg_msg("sql", "Showing saves done");
|
dbg_msg("sql", "Showing saves done");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1808,11 +1813,8 @@ bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayer
|
||||||
{
|
{
|
||||||
dbg_msg("sql", "MySQL Error: %s", e.what());
|
dbg_msg("sql", "MySQL Error: %s", e.what());
|
||||||
dbg_msg("sql", "ERROR: Could not get saves");
|
dbg_msg("sql", "ERROR: Could not get saves");
|
||||||
pData->GameServer()->SendChatTarget(pData->m_ClientID, "MySQL Error: Could not get saves");
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
*/
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -147,11 +147,6 @@ struct CSqlTeamLoad : CSqlData<CSqlResult>
|
||||||
char m_ClientName[MAX_NAME_LENGTH];
|
char m_ClientName[MAX_NAME_LENGTH];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CSqlGetSavesData: CSqlData<CSqlResult>
|
|
||||||
{
|
|
||||||
sqlstr::CSqlString<MAX_NAME_LENGTH> m_Name;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct CSqlRandomMap : CSqlData<CSqlResult>
|
struct CSqlRandomMap : CSqlData<CSqlResult>
|
||||||
{
|
{
|
||||||
using CSqlData::CSqlData;
|
using CSqlData::CSqlData;
|
||||||
|
|
Loading…
Reference in a new issue