|
UniSet
2.0.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 "MySQLInterface.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(MySQLInterface *db){}; 00148 virtual void initDBTableMap(DBTableMap& tblMap){}; 00149 00150 virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override; 00151 virtual void sysCommand( const UniSetTypes::SystemMessage* sm ) override; 00152 virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override; 00153 virtual void confirmInfo( const UniSetTypes::ConfirmMessage* cmsg ) override; 00154 00155 bool writeToBase( const string& query ); 00156 virtual void init_dbserver(); 00157 void createTables( MySQLInterface* db ); 00158 00159 inline const char* tblName(int key) 00160 { 00161 return tblMap[key].c_str(); 00162 } 00163 00164 enum Timers 00165 { 00166 PingTimer, 00167 ReconnectTimer, 00168 lastNumberOfTimer 00169 }; 00170 00171 00172 MySQLInterface *db; 00173 int PingTime; 00174 int ReconnectTime; 00175 bool connect_ok; 00177 bool activate; 00178 00179 typedef std::queue<std::string> QueryBuffer; 00180 00181 QueryBuffer qbuf; 00182 unsigned int qbufSize; // размер буфера сообщений. 00183 bool lastRemove; 00184 00185 void flushBuffer(); 00186 UniSetTypes::uniset_rwmutex mqbuf; 00187 00188 private: 00189 DBTableMap tblMap; 00190 00191 }; 00192 //------------------------------------------------------------------------------------------ 00193 #endif
1.7.6.1