UniSet
2.8.0
|
Открытые члены | |
DBServer_SQLite (uniset::ObjectId id, const std::string &prefix) | |
DBServer_SQLite (const std::string &prefix) | |
std::shared_ptr< LogAgregator > | logAggregator () |
std::shared_ptr< DebugStream > | log () |
![]() | |
DBServer (uniset::ObjectId id, const std::string &prefix="db") | |
DBServer (const std::string &prefix="db") | |
virtual uniset::SimpleInfo * | getInfo (const char *userparam="") override |
![]() | |
UniSetObject (const std::string &name, const std::string §ion) | |
UniSetObject (uniset::ObjectId id) | |
virtual CORBA::Boolean | exist () override |
virtual uniset::ObjectId | getId () override |
const uniset::ObjectId | getId () const |
std::string | getName () const |
virtual uniset::ObjectType | getType () override |
const std::string | getStrType () |
virtual uniset::SimpleInfo * | apiRequest (const char *query) override |
virtual void | push (const uniset::TransportMessage &msg) override |
поместить сообщение в очередь Подробнее... | |
virtual void | pushMessage (const char *msg, ::CORBA::Long mtype, const ::uniset::Timespec &tm, const ::uniset::ProducerInfo &pi, ::CORBA::Long priority, ::CORBA::Long consumer) override |
поместить текстовое сообщение в очередь Подробнее... | |
virtual Poco::JSON::Object::Ptr | httpGet (const Poco::URI::QueryParameters &p) override |
virtual Poco::JSON::Object::Ptr | httpHelp (const Poco::URI::QueryParameters &p) override |
uniset::ObjectPtr | getRef () const |
std::shared_ptr< UniSetObject > | get_ptr () |
virtual timeout_t | askTimer (uniset::TimerId timerid, timeout_t timeMS, clock_t ticks=-1, uniset::Message::Priority p=uniset::Message::High) override |
![]() | |
timeout_t | checkTimers (UniSetObject *obj) |
timeout_t | getTimeInterval (uniset::TimerId timerid) const |
timeout_t | getTimeLeft (uniset::TimerId timerid) const |
![]() | |
virtual Poco::JSON::Object::Ptr | httpRequest (const std::string &req, const Poco::URI::QueryParameters &p) |
Открытые статические члены | |
static std::shared_ptr< DBServer_SQLite > | init_dbserver (int argc, const char *const *argv, const std::string &prefix="sqlite") |
static void | help_print (int argc, const char *const *argv) |
![]() | |
static std::string | help_print () |
Защищенные типы | |
enum | Timers { PingTimer, ReconnectTimer, lastNumberOfTimer } |
typedef std::unordered_map< int, std::string > | DBTableMap |
typedef std::queue< std::string > | QueryBuffer |
![]() | |
typedef std::deque< TimerInfo > | TimersList |
Защищенные члены | |
virtual void | initDBServer () override |
virtual void | initDB (const std::unique_ptr< SQLiteInterface > &db) |
virtual void | initDBTableMap (DBTableMap &tblMap) |
virtual void | timerInfo (const uniset::TimerMessage *tm) override |
virtual void | sysCommand (const uniset::SystemMessage *sm) override |
virtual void | sensorInfo (const uniset::SensorMessage *sm) override |
virtual void | confirmInfo (const uniset::ConfirmMessage *cmsg) override |
virtual void | onTextMessage (const uniset::TextMessage *msg) override |
virtual std::string | getMonitInfo (const std::string ¶ms) override |
bool | writeToBase (const std::string &query) |
void | createTables (SQLiteInterface *db) |
std::string | tblName (int key) |
void | flushBuffer () |
![]() | |
virtual void | processingMessage (const uniset::VoidMessage *msg) override |
virtual bool | activateObject () override |
Активизация объекта (переопределяется для необходимых действий после активизации) Подробнее... | |
![]() | |
VoidMessagePtr | receiveMessage () |
VoidMessagePtr | waitMessage (timeout_t msec=UniSetTimer::WaitUpTime) |
void | termWaiting () |
size_t | countMessages () |
size_t | getCountOfLostMessages () const |
virtual bool | deactivateObject () |
Деактивация объекта (переопределяется для необходимых действий при завершении работы) Подробнее... | |
void | uterminate () |
void | thread (bool create) |
void | offThread () |
void | onThread () |
virtual void | callback () |
void | setID (uniset::ObjectId id) |
void | setThreadPriority (Poco::Thread::Priority p) |
void | setMaxSizeOfMessageQueue (size_t s) |
size_t | getMaxSizeOfMessageQueue () const |
bool | isActive () const |
void | setActive (bool set) |
virtual Poco::JSON::Object::Ptr | httpGetMyInfo (Poco::JSON::Object::Ptr root) |
Poco::JSON::Object::Ptr | request_conf (const std::string &req, const Poco::URI::QueryParameters &p) |
Poco::JSON::Object::Ptr | request_conf_name (const std::string &name, const std::string &props) |
![]() | |
virtual std::string | getTimerName (int id) const |
TimersList | getTimersList () const |
Защищенные данные | |
std::unique_ptr< SQLiteInterface > | db |
int | PingTime = { 300000 } |
int | ReconnectTime = { 180000 } |
bool | connect_ok = { false } |
bool | activate = { false } |
QueryBuffer | qbuf |
size_t | qbufSize = { 200 } |
bool | lastRemove = { false } |
uniset::uniset_rwmutex | mqbuf |
![]() | |
std::shared_ptr< LogAgregator > | loga |
std::shared_ptr< DebugStream > | dblog |
std::shared_ptr< LogServer > | logserv |
std::string | logserv_host = {""} |
int | logserv_port = {0} |
const std::string | prefix = { "db" } |
![]() | |
std::shared_ptr< UInterface > | ui |
std::string | myname |
std::weak_ptr< UniSetManager > | mymngr |
![]() | |
timeout_t | sleepTime |
\page page_DBServer_SQLite (DBServer_SQLite) Реализация сервиса ведения БД на основе SQLite - \ref sec_DBS_Comm - \ref sec_DBS_Conf - \ref sec_DBS_Tables - \ref sec_DBS_Buffer \section sec_DBS_Comm Общее описание работы DBServer_SQLite Сервис предназначен для работы с БД SQLite. В его задачи входит сохранение всех событий происходящих в системе в БД. К этим событиям относятся изменение состояния датчиков, различные логи работы процессов и т.п. К моменту запуска, подразумевается, что необходимые таблицы уже созданы, все необходимые настройки mysql сделаны. \par При работе с БД, сервис в основном пишет в БД. Обработка накопленных данных ведётся уже другими программами (web-интерфейс). \par Для повышения надежности DBServer периодически ( DBServer_SQLite::PingTimer ) проверяет наличие связи с сервером БД. В случае если связь пропала (или не была установлена при старте) DBServer пытается вновь каждые DBServer::ReconnectTimer произвести соединение. При этом все запросы которые поступают для записи в БД, но не могут быть записаны складываются в буфер (см. \ref sec_DBS_Buffer). \warning При каждой попытке восстановить соединение DBServer заново читает конф. файл. Поэтому он может подхватить новые настройки. \todo Может не сохранять текст, если задан код... (для экономии в БД) \section sec_DBS_Conf Настройка DBServer Объект DBServer берёт настройки из конфигурационного файла из секции \b<LocalDBServer>. Возможно задать следующие параметры: - \b dbname - название БД - \b dbnode - узел БД - \b dbuser - пользователь - \b dbpass - пароль для доступа к БД - \b pingTime - период проверки связи с сервером SQLite - \b reconnectTime - время повторной попытки соединения с БД \section sec_DBS_Buffer Защита от потери данных Для того, чтобы на момент отсутствия связи с БД данные по возможности не потерялись, сделан "кольцевой" буфер. Размер которого можно регулировать параметром "--dbserver-buffer-size" или параметром \b bufferSize=".." в конфигурационном файле секции "<LocalDBSErver...>". Механизм построен на том, что если связь с mysql сервером отсутствует или пропала, то сообщения помещаются в нулевой буфер, который "опустошается" как только она восстановится. Если связь не восстановилась, а буфер достиг максимального заданного размера, то удаляются более ранние сообщения. Эту логику можно сменить, если указать параметр "--dbserver-buffer-last-remove" или \b bufferLastRemove="1", то теряться будут сообщения добавляемые в конец. \section sec_DBS_Tables Таблицы SQLite К основным таблицам относятся следующие (описание в формате MySQL!):
|
protected |
|
static |
глобальная функция для вывода help-а
|
static |
глобальная функция для инициализации объекта
|
protected |
признак наличия соединения с сервером БД