diff --git a/src/db/Db2CppDb.cpp b/src/db/Db2CppDb.cpp index 2349e5a..b48bba9 100644 --- a/src/db/Db2CppDb.cpp +++ b/src/db/Db2CppDb.cpp @@ -26,10 +26,8 @@ https://github.com/sago007/oastat/ #include #include -using namespace std; -using namespace cppdb; -void Db2CppDb::InitStrings(const string &backend) +void Db2CppDb::InitStrings(const std::string &backend) { last_value = true; if (backend == "pgsql") { @@ -43,7 +41,7 @@ void Db2CppDb::InitStrings(const string &backend) void Db2CppDb::ReadConfigFromDb() { - string value; + std::string value; cppdb::result res = *sql<<"SELECT thekey FROM oastat_config_uservars2save"; while (res.next()) { res >> value; @@ -56,7 +54,7 @@ void Db2CppDb::ReadConfigFromDb() } } -bool Db2CppDb::IsDuplicate(const string &servername,const tm &thetime) +bool Db2CppDb::IsDuplicate(const std::string &servername,const tm &thetime) { cppdb::result res = *sql << "SELECT 'X' FROM oastat_games WHERE servername = ? AND time = ?"<(new cppdb::session(connectstring)); - commitlock = shared_ptr(new transaction(*sql)); + sql = std::shared_ptr(new cppdb::session(connectstring)); + commitlock = std::shared_ptr(new cppdb::transaction(*sql)); InitStrings("pgsql"); ReadConfigFromDb(); - debug = false; } -Db2CppDb::Db2CppDb(const string &dbargs) +Db2CppDb::Db2CppDb(const std::string &dbargs) { - stringstream stream(stringstream::in | stringstream::out); + std::stringstream stream(std::stringstream::in | std::stringstream::out); stream << dbargs; - string holder; + std::string holder; getline(stream,holder,':'); connectstring = dbargs; - sql = shared_ptr(new cppdb::session(connectstring)); - commitlock = shared_ptr(new transaction(*sql)); + sql = std::shared_ptr(new cppdb::session(connectstring)); + commitlock = std::shared_ptr(new cppdb::transaction(*sql)); InitStrings(holder); ReadConfigFromDb(); debug = false; @@ -92,7 +88,7 @@ Db2CppDb::Db2CppDb(const string &dbargs) Db2CppDb::Db2CppDb(const Db2CppDb& orig) { - throw runtime_error("May not make copy of Db2CppDb"); + throw std::runtime_error("May not make copy of Db2CppDb"); } Db2CppDb::~Db2CppDb() @@ -104,26 +100,26 @@ void Db2CppDb::createTables() } -void Db2CppDb::startGame(int gametype, const string &mapname, const string &basegame, const string &servername, const OaStatStruct &oss) +void Db2CppDb::startGame(int gametype, const std::string &mapname, const std::string &basegame, const std::string &servername, const OaStatStruct &oss) { commitlock = nullptr; - sql = shared_ptr(new cppdb::session(connectstring)); - commitlock = shared_ptr(new transaction(*sql)); + sql = std::shared_ptr(new cppdb::session(connectstring)); + commitlock = std::shared_ptr(new cppdb::transaction(*sql)); Rollback(); //in case there was some garbage that could be comitted (like warmup or an unfinished game) SetOk(true); timestamp = oss.getDateTime(); - if (oss.restOfLine.find("\\isWarmup\\1") != string::npos) { + if (oss.restOfLine.find("\\isWarmup\\1") != std::string::npos) { SetOk(false); - cout << "Warmup: " << servername << ", " << oss.getTimeStamp() << endl; + std::cout << "Warmup: " << servername << ", " << oss.getTimeStamp() << "\n"; return; } if (IsDuplicate(servername,timestamp)) { SetOk(false); - cout << "Duplicate:" << servername << ", " << oss.getTimeStamp() << endl; + std::cout << "Duplicate:" << servername << ", " << oss.getTimeStamp() << "\n"; return; } if (last_value) { - statement st = *sql << "INSERT INTO oastat_games(gametype, mapname, basegame,servername,time) VALUES (?,LOWER(?),?,?,?)"; //<-1) { try { - statement st = sql->create_statement("SAVEPOINT SETPLAYER"); + cppdb::statement st = sql->create_statement("SAVEPOINT SETPLAYER"); st.exec(); *sql << "INSERT INTO oastat_players(guid,nickname,lastseen,isBot, model, headmodel) VALUES (?,?,?,?,?,?)" << - guid << nickname << timestamp << (isBot? "y":"n") << model << headmodel << exec; - statement str = sql->create_statement("RELEASE SAVEPOINT SETPLAYER"); + guid << nickname << timestamp << (isBot? "y":"n") << model << headmodel << cppdb::exec; + cppdb::statement str = sql->create_statement("RELEASE SAVEPOINT SETPLAYER"); str.exec(); } catch (cppdb::cppdb_error &e) { - DebugMessage("Already inserted? "+(string)e.what()); - statement str = sql->create_statement("ROLLBACK TO SAVEPOINT SETPLAYER"); + DebugMessage("Already inserted? "+(std::string)e.what()); + cppdb::statement str = sql->create_statement("ROLLBACK TO SAVEPOINT SETPLAYER"); str.exec(); } *sql << "UPDATE oastat_players SET nickname = ?,lastseen = ?,isBot = ?, model = ?, headmodel = ? WHERE guid = ? AND lastseen < ?" << - nickname << timestamp << (isBot? "y":"n") << model << headmodel << guid << timestamp << exec; + nickname << timestamp << (isBot? "y":"n") << model << headmodel << guid << timestamp << cppdb::exec; } try { - statement st = sql->create_statement("SAVEPOINT SETUSERINFO"); + cppdb::statement st = sql->create_statement("SAVEPOINT SETUSERINFO"); st.exec(); - *sql << "INSERT INTO oastat_userinfo(gamenumber,second,player,team,model,skill) VALUES (?,?,?,?,?,?)" << gamenumber << second << getPlayerId(guid) << team << model << skill << exec; - statement str = sql->create_statement("RELEASE SAVEPOINT SETUSERINFO"); + *sql << "INSERT INTO oastat_userinfo(gamenumber,second,player,team,model,skill) VALUES (?,?,?,?,?,?)" << gamenumber << second << getPlayerId(guid) << team << model << skill << cppdb::exec; + cppdb::statement str = sql->create_statement("RELEASE SAVEPOINT SETUSERINFO"); str.exec(); - } catch (cppdb_error &e) { - statement str = sql->create_statement("ROLLBACK TO SAVEPOINT SETUSERINFO"); + } catch (cppdb::cppdb_error &e) { + cppdb::statement str = sql->create_statement("ROLLBACK TO SAVEPOINT SETUSERINFO"); str.exec(); *sql << "UPDATE oastat_userinfo SET team = ?, model = ?, skill = ? WHERE gamenumber = ? AND second = ? AND player = ?" << - team << model << skill << gamenumber << second << getPlayerId(guid) << exec; + team << model << skill << gamenumber << second << getPlayerId(guid) << cppdb::exec; } DebugMessage("setPlayerInfo for "+nickname+" with GUID: "+guid); } @@ -214,7 +210,7 @@ void Db2CppDb::addKill(int second, const std::string &attackerID, const std::str if (!isok) { return; } - *sql<< "INSERT INTO oastat_kills(gamenumber,second,attacker,target,modtype) VALUES(?,?,?,?,?)" << gamenumber << second << getPlayerId(attackerID) << getPlayerId(targetID) << type << exec; + *sql<< "INSERT INTO oastat_kills(gamenumber,second,attacker,target,modtype) VALUES(?,?,?,?,?)" << gamenumber << second << getPlayerId(attackerID) << getPlayerId(targetID) << type << cppdb::exec; DebugMessage("addKill"); } @@ -223,7 +219,7 @@ void Db2CppDb::addAward(int second, const std::string &player, int award) if (!isok) { return; } - *sql << "INSERT INTO oastat_awards(gamenumber,second,player,award) VALUES (?,?,?,?)" << gamenumber << second << getPlayerId(player) << award << exec; + *sql << "INSERT INTO oastat_awards(gamenumber,second,player,award) VALUES (?,?,?,?)" << gamenumber << second << getPlayerId(player) << award << cppdb::exec; DebugMessage("addAward"); } @@ -232,7 +228,7 @@ void Db2CppDb::addScoreInfo(int second, const std::string &player, int score) if (!isok) { return; } - *sql << "INSERT INTO oastat_points(gamenumber,second,player,score) VALUES (?,?,?,?)" << gamenumber << second << getPlayerId(player) << score << exec; + *sql << "INSERT INTO oastat_points(gamenumber,second,player,score) VALUES (?,?,?,?)" << gamenumber << second << getPlayerId(player) << score << cppdb::exec; DebugMessage("addScoreInfo"); } @@ -241,7 +237,7 @@ void Db2CppDb::addCtf(int second, const std::string &player, int team, int event if (!isok) { return; } - *sql << "INSERT INTO oastat_team_events(gamenumber,second,team,player,gametype,eventtype) VALUES (?,?,?,?,'ctf',?)" << gamenumber << second << team << getPlayerId(player) << event << exec; + *sql << "INSERT INTO oastat_team_events(gamenumber,second,team,player,gametype,eventtype) VALUES (?,?,?,?,'ctf',?)" << gamenumber << second << team << getPlayerId(player) << event << cppdb::exec; DebugMessage("addCtf"); } @@ -250,7 +246,7 @@ void Db2CppDb::addCtf1f(int second, const std::string &player, int team, int eve if (!isok) { return; } - *sql << "INSERT INTO oastat_team_events(gamenumber,second,team,player,gametype,eventtype) VALUES (?,?,?,?,'1fctf',?)" << gamenumber << second << team << getPlayerId(player) << event << exec; + *sql << "INSERT INTO oastat_team_events(gamenumber,second,team,player,gametype,eventtype) VALUES (?,?,?,?,'1fctf',?)" << gamenumber << second << team << getPlayerId(player) << event << cppdb::exec; DebugMessage("addCtf1f"); } @@ -260,7 +256,7 @@ void Db2CppDb::addElimination(int second, int roundnumber, int team, int event) return; } *sql << "INSERT INTO oastat_team_events(gamenumber,second,team,eventtype,generic1,gametype) VALUES (?,?,?,?,?,'elimination')" << - gamenumber << second << team << event << roundnumber << exec; + gamenumber << second << team << event << roundnumber << cppdb::exec; DebugMessage("addElimination"); } @@ -270,7 +266,7 @@ void Db2CppDb::addCtfElimination(int second, int roundnumber, const std::string return; } *sql << "INSERT INTO oastat_team_events(gamenumber,second,team,player,eventtype,generic1,gametype) VALUES (?,?,?,?,?,?,'ctfelim')" << gamenumber << second << - team << getPlayerId(player) << event << roundnumber << exec; + team << getPlayerId(player) << event << roundnumber << cppdb::exec; DebugMessage("addCtfElimination"); } @@ -280,7 +276,7 @@ void Db2CppDb::addHarvester(int second, const std::string &player1, const std::s return; } *sql << "INSERT INTO oastat_team_events(gamenumber,second,team,player,player2,eventtype,amount,gametype) VALUES (?,?,?,?,?,?,?,'harvester')" << - gamenumber << second << team << getPlayerId(player1) << getPlayerId(player2) << event << score << exec; + gamenumber << second << team << getPlayerId(player1) << getPlayerId(player2) << event << score << cppdb::exec; DebugMessage("addHarvester"); } @@ -290,7 +286,7 @@ void Db2CppDb::addGenericTeamEvent(int second, int team, int amount, const std:: return; } *sql << "INSERT INTO oastat_team_events(gamenumber,second,team,player,player2,eventtype,amount,generic1,gametype) VALUES (?,?,?,?,?,?,?,?,?)" << - gamenumber << second << team << getPlayerId(player1) << getPlayerId(player2) << event << amount << generic1 << gametype << exec; + gamenumber << second << team << getPlayerId(player1) << getPlayerId(player2) << event << amount << generic1 << gametype << cppdb::exec; DebugMessage("addGenericTeamEvent"); } @@ -299,7 +295,7 @@ void Db2CppDb::addChallenge(int second, const std::string &player, int challenge if (!isok) { return; } - *sql << "INSERT INTO oastat_challenges(gamenumber,player,challenge,amount) VALUES (?,?,?,?)" << gamenumber << getPlayerId(player) << challenge << amount << exec; + *sql << "INSERT INTO oastat_challenges(gamenumber,player,challenge,amount) VALUES (?,?,?,?)" << gamenumber << getPlayerId(player) << challenge << amount << cppdb::exec; DebugMessage("addChallenge"); } @@ -309,28 +305,28 @@ void Db2CppDb::addAccuracy(int second, const std::string &player, int type, int return; } try { - statement st = sql->create_statement("SAVEPOINT SETACCURACY"); + cppdb::statement st = sql->create_statement("SAVEPOINT SETACCURACY"); st.exec(); - *sql << "INSERT INTO oastat_accuracy(gamenumber,player,shotsfired,shotshit,modtype) VALUES (?,?,?,?,?)" << gamenumber << getPlayerId(player) << shotsFired << shotsHit << type << exec; - statement str = sql->create_statement("RELEASE SAVEPOINT SETACCURACY"); + *sql << "INSERT INTO oastat_accuracy(gamenumber,player,shotsfired,shotshit,modtype) VALUES (?,?,?,?,?)" << gamenumber << getPlayerId(player) << shotsFired << shotsHit << type << cppdb::exec; + cppdb::statement str = sql->create_statement("RELEASE SAVEPOINT SETACCURACY"); str.exec(); - } catch (cppdb_error &e) { - statement str = sql->create_statement("ROLLBACK TO SAVEPOINT SETACCURACY"); + } catch (cppdb::cppdb_error &e) { + cppdb::statement str = sql->create_statement("ROLLBACK TO SAVEPOINT SETACCURACY"); str.exec(); - *sql << "UPDATE oastat_accuracy SET shotsfired = ?, shotshit = ?, modtype = ? WHERE player = ? AND gamenumber = ?" << shotsFired << shotsHit << type << getPlayerId(player) << gamenumber << exec; + *sql << "UPDATE oastat_accuracy SET shotsfired = ?, shotshit = ?, modtype = ? WHERE player = ? AND gamenumber = ?" << shotsFired << shotsHit << type << getPlayerId(player) << gamenumber << cppdb::exec; } } int Db2CppDb::getNextGameNumber() { int ret = -1; - result res = *sql<< "SELECT nextval('oastat_games_gamenumber_seq')"; + cppdb::result res = *sql<< "SELECT nextval('oastat_games_gamenumber_seq')"; DebugMessage("Gettings next game number"); if (res.next()) { res >> ret; return ret; } else { - throw runtime_error("Could not get next gamenumber"); + throw std::runtime_error("Could not get next gamenumber"); } } @@ -346,10 +342,10 @@ int Db2CppDb::getLastGameNumber() DebugMessage("Gettings last game number"); if (res.next()) { res>> result; - cout << "Game number: " << result << endl; + std::cout << "Game number: " << result << "\n"; return result; } else { - throw runtime_error("Could not get last gamenumber"); + throw std::runtime_error("Could not get last gamenumber"); } } @@ -365,7 +361,7 @@ void Db2CppDb::Commit() } commitlock->commit(); commitlock = nullptr; - commitlock = shared_ptr(new transaction(*sql)); + commitlock = std::shared_ptr(new cppdb::transaction(*sql)); DebugMessage("Commited"); } @@ -373,7 +369,7 @@ void Db2CppDb::Rollback() { commitlock->rollback(); commitlock = nullptr; - commitlock = shared_ptr(new transaction(*sql)); + commitlock = std::shared_ptr(new cppdb::transaction(*sql)); DebugMessage("Rollback"); } @@ -392,20 +388,20 @@ void Db2CppDb::doNotCommit() SetOk(false); } -void Db2CppDb::DebugMessage(const string &msg) +void Db2CppDb::DebugMessage(const std::string &msg) { if (debug) { - cout << "oastat: " << msg << endl; + std::cout << "oastat: " << msg << "\n"; } } -int Db2CppDb::getPlayerId(const string& guid) +int Db2CppDb::getPlayerId(const std::string& guid) { int ret = 0; if (playerids.count(guid)) { ret = playerids[guid]; } else { - result res = *sql << "SELECT playerid FROM oastat_players WHERE guid = ?" << guid; + cppdb::result res = *sql << "SELECT playerid FROM oastat_players WHERE guid = ?" << guid; if (res.next()) { res >> ret; playerids[guid] = ret; diff --git a/src/db/Db2CppDb.hpp b/src/db/Db2CppDb.hpp index ac8edb7..e6cb167 100644 --- a/src/db/Db2CppDb.hpp +++ b/src/db/Db2CppDb.hpp @@ -58,10 +58,10 @@ private: std::shared_ptr sql; std::shared_ptr commitlock; std::string connectstring; - bool isok; - bool debug; - int gamenumber; /** Gamenumber we are currently working on */ - tm timestamp; /** Start time of the game we are currently working on */ + bool isok = false; + bool debug = false; + int gamenumber = 0; /** Gamenumber we are currently working on */ + tm timestamp = {}; /** Start time of the game we are currently working on */ int getNextGameNumber(); int getLastGameNumber(); void Commit(); @@ -75,7 +75,7 @@ private: int getPlayerId(const std::string &guid); std::map playerids; std::string sql_backend; - bool last_value; + bool last_value = false; std::set cvars2save; std::set uservars2save; }; diff --git a/src/oastatstruct.cpp b/src/oastatstruct.cpp index d912a6f..054f0d7 100644 --- a/src/oastatstruct.cpp +++ b/src/oastatstruct.cpp @@ -36,28 +36,6 @@ static void makeLower(std::string &x) } } -//tm OaStatStruct::_datetime; - -OaStatStruct::OaStatStruct() -{ - second = 0; - command = ""; - parameters.clear(); - restOfLine = ""; -} - -OaStatStruct::OaStatStruct(const OaStatStruct& orig) -{ - second = orig.second; - command = orig.command; - parameters = orig.parameters; - restOfLine = orig.restOfLine; - _datetime = orig._datetime; -} - -OaStatStruct::~OaStatStruct() -{ -} void OaStatStruct::clear() { diff --git a/src/oastatstruct.h b/src/oastatstruct.h index 8824feb..387fb70 100644 --- a/src/oastatstruct.h +++ b/src/oastatstruct.h @@ -37,12 +37,14 @@ https://github.com/sago007/oastat/ class OaStatStruct { public: - OaStatStruct(); - OaStatStruct(const OaStatStruct& orig); - virtual ~OaStatStruct(); + OaStatStruct() = default; + OaStatStruct(const OaStatStruct& orig) = default; + virtual ~OaStatStruct() = default; + + OaStatStruct& operator=(const OaStatStruct& orig) = default; //There are no reason to make any variables private. - int second; //number of seconds + int second = 0; //number of seconds std::string command; //Like 'ClientConnect', 'Award' and 'Kill' std::vector parameters; //The parameters for the command. std::string restOfLine; @@ -72,7 +74,7 @@ public: */ void setTimeStamp(const std::string ×tring); private: - tm _datetime; + tm _datetime = {}; }; #endif /* _OASTATSTRUCT_H */ diff --git a/src/oss2db/Award2Db.h b/src/oss2db/Award2Db.h index f4d6037..b595da5 100644 --- a/src/oss2db/Award2Db.h +++ b/src/oss2db/Award2Db.h @@ -31,10 +31,10 @@ class Award2Db : public Struct2Db { public: - std::string getCommand() const; - bool canProcess(const OaStatStruct &oss) const; + std::string getCommand() const override; + bool canProcess(const OaStatStruct &oss) const override; - void process(const OaStatStruct &oss); + void process(const OaStatStruct &oss) override; private: }; diff --git a/src/oss2db/Ctf1f2Db.hpp b/src/oss2db/Ctf1f2Db.hpp index 4936a4e..ec6c138 100644 --- a/src/oss2db/Ctf1f2Db.hpp +++ b/src/oss2db/Ctf1f2Db.hpp @@ -31,10 +31,10 @@ class Ctf1f2Db : public Struct2Db { public: - std::string getCommand() const; - bool canProcess(const OaStatStruct &oss) const; + std::string getCommand() const override; + bool canProcess(const OaStatStruct &oss) const override; - void process(const OaStatStruct &oss); + void process(const OaStatStruct &oss) override; private: }; diff --git a/src/oss2db/CtfElimination2Db.hpp b/src/oss2db/CtfElimination2Db.hpp index 432d6f0..b4408f4 100644 --- a/src/oss2db/CtfElimination2Db.hpp +++ b/src/oss2db/CtfElimination2Db.hpp @@ -31,10 +31,10 @@ https://github.com/sago007/oastat/ class CtfElimination2Db : public Struct2Db { public: - std::string getCommand() const; - bool canProcess(const OaStatStruct &oss) const; + std::string getCommand() const override; + bool canProcess(const OaStatStruct &oss) const override; - void process(const OaStatStruct &oss); + void process(const OaStatStruct &oss) override; private: diff --git a/src/oss2db/Point2Db.hpp b/src/oss2db/Point2Db.hpp index ea88b14..c6ba4a6 100644 --- a/src/oss2db/Point2Db.hpp +++ b/src/oss2db/Point2Db.hpp @@ -30,10 +30,10 @@ https://github.com/sago007/oastat/ class Point2Db : public Struct2Db { public: - std::string getCommand() const; - bool canProcess(const OaStatStruct &oss) const; + std::string getCommand() const override; + bool canProcess(const OaStatStruct &oss) const override; - void process(const OaStatStruct &oss); + void process(const OaStatStruct &oss) override; private: }; diff --git a/src/oss2db/init2db.h b/src/oss2db/init2db.h index 59dc593..0eb3afb 100644 --- a/src/oss2db/init2db.h +++ b/src/oss2db/init2db.h @@ -31,10 +31,10 @@ class Init2Db : public Struct2Db { public: - std::string getCommand() const; - bool canProcess(const OaStatStruct &oss) const; + std::string getCommand() const override; + bool canProcess(const OaStatStruct &oss) const override; - void process(const OaStatStruct &oss); + void process(const OaStatStruct &oss) override; private: }; diff --git a/src/oss2db/shutdown2db.h b/src/oss2db/shutdown2db.h index 527bc4a..8d6aa8f 100644 --- a/src/oss2db/shutdown2db.h +++ b/src/oss2db/shutdown2db.h @@ -31,12 +31,12 @@ class Shutdown2Db : public Struct2Db { public: - std::string getCommand() const; - bool canProcess(const OaStatStruct &oss) const; + std::string getCommand() const override; + bool canProcess(const OaStatStruct &oss) const override; - void process(const OaStatStruct &oss); + void process(const OaStatStruct &oss) override; - bool shouldCommit(); + bool shouldCommit() override; private: }; diff --git a/src/oss2db/userinfo2db.h b/src/oss2db/userinfo2db.h index a9cccfa..fd19855 100644 --- a/src/oss2db/userinfo2db.h +++ b/src/oss2db/userinfo2db.h @@ -31,11 +31,11 @@ class Userinfo2Db : public Struct2Db { public: - std::string getCommand() const; + std::string getCommand() const override; - bool canProcess(const OaStatStruct &oss) const; + bool canProcess(const OaStatStruct &oss) const override; - void process(const OaStatStruct &oss); + void process(const OaStatStruct &oss) override; private: };