diff --git a/src/oss2db/Award2Db.cpp b/src/oss2db/Award2Db.cpp index e16130f..314639e 100644 --- a/src/oss2db/Award2Db.cpp +++ b/src/oss2db/Award2Db.cpp @@ -22,6 +22,12 @@ string Award2Db::getCommand() { return "Award"; } +bool Award2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Award2Db::process(OaStatStruct oss) { if(oss.command != getCommand() || oss.parameters.size()<2 || oss.parameters.at(0)<0) return; //Invalid oss diff --git a/src/oss2db/Award2Db.h b/src/oss2db/Award2Db.h index 7d9fe9a..53e2aae 100644 --- a/src/oss2db/Award2Db.h +++ b/src/oss2db/Award2Db.h @@ -18,6 +18,7 @@ public: virtual ~Award2Db(); string getCommand(); + bool canProcess(OaStatStruct oss); void process(OaStatStruct oss); private: diff --git a/src/oss2db/Ctf1f2Db.cpp b/src/oss2db/Ctf1f2Db.cpp index d640993..a28f591 100644 --- a/src/oss2db/Ctf1f2Db.cpp +++ b/src/oss2db/Ctf1f2Db.cpp @@ -20,6 +20,12 @@ string Ctf1f2Db::getCommand() { return "1FCTF"; } +bool Ctf1f2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Ctf1f2Db::process(OaStatStruct oss) { if(oss.command != getCommand() || oss.parameters.size()<3 || oss.parameters.at(0)<0) return; //Invalid oss diff --git a/src/oss2db/Ctf1f2Db.hpp b/src/oss2db/Ctf1f2Db.hpp index 670775c..74aa1fb 100644 --- a/src/oss2db/Ctf1f2Db.hpp +++ b/src/oss2db/Ctf1f2Db.hpp @@ -18,6 +18,7 @@ public: virtual ~Ctf1f2Db(); string getCommand(); + bool canProcess(OaStatStruct oss); void process(OaStatStruct oss); private: diff --git a/src/oss2db/Ctf2Db.cpp b/src/oss2db/Ctf2Db.cpp index 78ec84f..12f2311 100644 --- a/src/oss2db/Ctf2Db.cpp +++ b/src/oss2db/Ctf2Db.cpp @@ -21,6 +21,12 @@ string Ctf2Db::getCommand() { return "CTF"; } +bool Ctf2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Ctf2Db::process(OaStatStruct oss) { if(oss.command != getCommand() || oss.parameters.size()<3 || oss.parameters.at(0)<0) return; //Invalid oss diff --git a/src/oss2db/Ctf2Db.hpp b/src/oss2db/Ctf2Db.hpp index 6d9bfdd..62cf73e 100644 --- a/src/oss2db/Ctf2Db.hpp +++ b/src/oss2db/Ctf2Db.hpp @@ -18,6 +18,7 @@ public: virtual ~Ctf2Db(); string getCommand(); + bool canProcess(OaStatStruct oss); void process(OaStatStruct oss); private: diff --git a/src/oss2db/Disconnect2Db.cpp b/src/oss2db/Disconnect2Db.cpp index dc17eba..c5c8b92 100644 --- a/src/oss2db/Disconnect2Db.cpp +++ b/src/oss2db/Disconnect2Db.cpp @@ -34,6 +34,12 @@ string Disconnect2Db::getCommand() { return "ClientDisconnect"; } +bool Disconnect2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Disconnect2Db::process(OaStatStruct oss) { if(oss.command != getCommand() || oss.parameters.size()<1) return; //Invalid oss diff --git a/src/oss2db/Disconnect2Db.h b/src/oss2db/Disconnect2Db.h index 928b4b7..4ddded0 100644 --- a/src/oss2db/Disconnect2Db.h +++ b/src/oss2db/Disconnect2Db.h @@ -32,6 +32,7 @@ public: virtual ~Disconnect2Db(); string getCommand(); + bool canProcess(OaStatStruct oss); void process(OaStatStruct oss); private: diff --git a/src/oss2db/Elimination2Db.cpp b/src/oss2db/Elimination2Db.cpp index aed7988..461a44b 100644 --- a/src/oss2db/Elimination2Db.cpp +++ b/src/oss2db/Elimination2Db.cpp @@ -20,6 +20,12 @@ string Elimination2Db::getCommand() { return "ELIMINATION"; } +bool Elimination2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Elimination2Db::process(OaStatStruct oss) { if(oss.command != getCommand() || oss.parameters.size()<3 || oss.parameters.at(0)<0) return; //Invalid oss diff --git a/src/oss2db/Elimination2Db.hpp b/src/oss2db/Elimination2Db.hpp index 6d440ab..795ecaa 100644 --- a/src/oss2db/Elimination2Db.hpp +++ b/src/oss2db/Elimination2Db.hpp @@ -18,6 +18,7 @@ public: virtual ~Elimination2Db(); string getCommand(); + bool canProcess(OaStatStruct oss); void process(OaStatStruct oss); private: diff --git a/src/oss2db/Point2Db.cpp b/src/oss2db/Point2Db.cpp index 3eebb14..358fb28 100644 --- a/src/oss2db/Point2Db.cpp +++ b/src/oss2db/Point2Db.cpp @@ -20,6 +20,12 @@ string Point2Db::getCommand() { return "PlayerScore"; } +bool Point2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Point2Db::process(OaStatStruct oss) { if(oss.command != getCommand() || oss.parameters.size()<2 || oss.parameters.at(0)<0) return; //Invalid oss diff --git a/src/oss2db/Point2Db.hpp b/src/oss2db/Point2Db.hpp index ef1a7c0..05f30e3 100644 --- a/src/oss2db/Point2Db.hpp +++ b/src/oss2db/Point2Db.hpp @@ -18,6 +18,7 @@ public: virtual ~Point2Db(); string getCommand(); + bool canProcess(OaStatStruct oss); void process(OaStatStruct oss); private: diff --git a/src/oss2db/init2db.cpp b/src/oss2db/init2db.cpp index 15a08de..198cbf9 100644 --- a/src/oss2db/init2db.cpp +++ b/src/oss2db/init2db.cpp @@ -35,6 +35,12 @@ string Init2Db::getCommand() { return "InitGame"; } +bool Init2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Init2Db::process(OaStatStruct oss) { if(oss.command != getCommand()) return; //Invalid oss diff --git a/src/oss2db/init2db.h b/src/oss2db/init2db.h index 27b78d7..921e21a 100644 --- a/src/oss2db/init2db.h +++ b/src/oss2db/init2db.h @@ -32,6 +32,7 @@ public: virtual ~Init2Db(); string getCommand(); + bool canProcess(OaStatStruct oss); void process(OaStatStruct oss); private: diff --git a/src/oss2db/kill2db.cpp b/src/oss2db/kill2db.cpp index 406f5d1..6ab2362 100644 --- a/src/oss2db/kill2db.cpp +++ b/src/oss2db/kill2db.cpp @@ -26,6 +26,12 @@ string Kill2Db::getCommand() { return "Kill"; } +bool Kill2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Kill2Db::process(OaStatStruct oss) { if(oss.command != "Kill" || oss.parameters.size()<=3) return; //Invalid oss diff --git a/src/oss2db/kill2db.h b/src/oss2db/kill2db.h index f36b0c1..abb3a71 100644 --- a/src/oss2db/kill2db.h +++ b/src/oss2db/kill2db.h @@ -28,6 +28,7 @@ Copyright (C) 2010 Poul Sander (oastat@poulsander.com) class Kill2Db : public Struct2Db { string getCommand(); + bool canProcess(OaStatStruct oss); void process(OaStatStruct oss); diff --git a/src/oss2db/shutdown2db.cpp b/src/oss2db/shutdown2db.cpp index e6abe60..98cec78 100644 --- a/src/oss2db/shutdown2db.cpp +++ b/src/oss2db/shutdown2db.cpp @@ -35,6 +35,12 @@ string Shutdown2Db::getCommand() { return "ShutdownGame"; } +bool Shutdown2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Shutdown2Db::process(OaStatStruct oss) { if(oss.command != getCommand()) return; diff --git a/src/oss2db/shutdown2db.h b/src/oss2db/shutdown2db.h index be36ce2..5b03e2d 100644 --- a/src/oss2db/shutdown2db.h +++ b/src/oss2db/shutdown2db.h @@ -32,6 +32,7 @@ public: virtual ~Shutdown2Db(); string getCommand(); + bool canProcess(OaStatStruct oss); void process(OaStatStruct oss); diff --git a/src/oss2db/struct2db.h b/src/oss2db/struct2db.h index 6308905..701d73d 100644 --- a/src/oss2db/struct2db.h +++ b/src/oss2db/struct2db.h @@ -48,6 +48,14 @@ class Struct2Db { virtual string getCommand() = 0; /* + * The object needs a way to tell if it can process a command. + * + * This is better than the last getCommand, because it can check for multiple commands at once, and can + * discard subevents for supported commands. + */ + virtual bool canProcess(OaStatStruct oss) = 0; + + /* * Parses s OaStatStruct to the object to process */ virtual void process(OaStatStruct oss) = 0; diff --git a/src/oss2db/userinfo2db.cpp b/src/oss2db/userinfo2db.cpp index b5856f2..1bdd0b5 100644 --- a/src/oss2db/userinfo2db.cpp +++ b/src/oss2db/userinfo2db.cpp @@ -35,6 +35,12 @@ string Userinfo2Db::getCommand() { return "ClientUserinfoChanged"; } +bool Userinfo2Db::canProcess(OaStatStruct oss) { + if(oss.command != getCommand() || oss.parameters.size()<1) + return false; + return true; +} + void Userinfo2Db::process(OaStatStruct oss) { if(oss.command != getCommand() || oss.parameters.size()<1) return; //Invalid oss diff --git a/src/oss2db/userinfo2db.h b/src/oss2db/userinfo2db.h index fe25d63..91f1d97 100644 --- a/src/oss2db/userinfo2db.h +++ b/src/oss2db/userinfo2db.h @@ -33,6 +33,8 @@ public: string getCommand(); + bool canProcess(OaStatStruct oss); + void process(OaStatStruct oss); private: