|
UniSet
1.7.0
|
00001 /* This file is part of the UniSet project 00002 * Copyright (c) 2002 Free Software Foundation, Inc. 00003 * Copyright (c) 2002 Pavel Vainerman 00004 * 00005 * This program is free software; you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation; either version 2 of the License, or 00008 * (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; if not, write to the Free Software 00017 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00018 */ 00019 // -------------------------------------------------------------------------- 00023 // -------------------------------------------------------------------------- 00024 #ifndef DBServer_MySQL_H_ 00025 #define DBServer_MySQL_H_ 00026 // -------------------------------------------------------------------------- 00027 #include <map> 00028 #include <queue> 00029 #include "UniSetTypes.h" 00030 #include "DBInterface.h" 00031 #include "DBServer.h" 00032 //------------------------------------------------------------------------------------------ 00134 class DBServer_MySQL: 00135 public DBServer 00136 { 00137 public: 00138 DBServer_MySQL( UniSetTypes::ObjectId id ); 00139 DBServer_MySQL(); 00140 ~DBServer_MySQL(); 00141 00142 static const Debug::type DBLogInfoLevel = Debug::LEVEL9; 00143 00144 protected: 00145 typedef std::map<int, std::string> DBTableMap; 00146 00147 virtual void initDB(DBInterface *db){}; 00148 virtual void initDBTableMap(DBTableMap& tblMap){}; 00149 00150 virtual void processingMessage( UniSetTypes::VoidMessage *msg ); 00151 virtual void timerInfo( UniSetTypes::TimerMessage* tm ); 00152 virtual void sysCommand( UniSetTypes::SystemMessage* sm ); 00153 00154 // Функции обработки пришедших сообщений 00155 virtual void parse( UniSetTypes::SensorMessage* sm ); 00156 virtual void parse( UniSetTypes::DBMessage* dbmsg ); 00157 virtual void parse( UniSetTypes::ConfirmMessage* cmsg ); 00158 00159 bool writeToBase( const string& query ); 00160 virtual void init_dbserver(); 00161 void createTables( DBInterface* db ); 00162 00163 inline const char* tblName(int key) 00164 { 00165 return tblMap[key].c_str(); 00166 } 00167 00168 enum Timers 00169 { 00170 PingTimer, 00171 ReconnectTimer, 00172 lastNumberOfTimer 00173 }; 00174 00175 00176 DBInterface *db; 00177 int PingTime; 00178 int ReconnectTime; 00179 bool connect_ok; 00181 bool activate; 00182 00183 typedef std::queue<std::string> QueryBuffer; 00184 00185 QueryBuffer qbuf; 00186 unsigned int qbufSize; // размер буфера сообщений. 00187 bool lastRemove; 00188 00189 void flushBuffer(); 00190 UniSetTypes::uniset_mutex mqbuf; 00191 00192 private: 00193 DBTableMap tblMap; 00194 00195 }; 00196 //------------------------------------------------------------------------------------------ 00197 #endif
1.7.6.1