Настройка DBServer

Материал из База знаний Etersoft
Перейти к: навигация, поиск

1. Добавление DBServer в configure.xml

DBServer добавляется в configure.xml в секции <LocalDBServer>:

<LocalDBServer name="DBServer1" dbname="standpm" dbuser="dbadmin" dbpass="dbadmin" pingTime="10000" reconnectTime="15000" dbnode="GUINode"/>

где

name - имя объекта DBServer в репозитории omniNames
dbname - название БД
dbnode - узел БД
dbuser - пользователь
dbpass - пароль для доступа к БД
pingTime - период проверки связи с сервером MySQL
reconnectTime - время повторной попытки соединения с БД

DBServer необходимо добавить также в секцию <services>:

<services name="Services" section="Services" >
      <item id="3000" name="DBServer1"/>
</services>

В секции <nodes> надо добавить DBServer для соответствующих узлов. Например:

<nodes port="2809">
     <item id="2000" name="LocalhostNode" alias="" textname="Локальный узел" ip="127.0.0.1" infserver="" dbserver="DBServer1"/>
     <item id="2001" name="GUINode" alias="" textname="Графическая станция" ip="standpm" dbserver="DBServer1"/>
</nodes>

2. Скрипт запуска DBServer

В скрипте запуска DBServer необходимо указать имя соответствующего объекта:

--name DBServer1

В случае, если в проекте используется собственная реализация DBServer, лучше вместо указания имени DBServer через параметр стартового скрипта использовать для этого функцию conf->getDBServer().

Для получения отладочной информации надо использовать --unideb-add-levels:

--unideb-add-levels info,crit,warn

3. Скрипт запуска SharedMemory

В скрипт запуска SharedMemory необходимо добавить параметр:

--db-logging 1

Этот параметр указывает, что изменения состояния датчиков необходимо записывать в БД.

Также необходимо удалить параметр --sm-no-history, если он есть:

--sm-no-history 1

4. Собственная реализация DBServer

В проекте может быть собственная реализация DBServer. Для этого класс с реализацией DBServer должен наследоваться от класса DBServer_MySQL.
При этом в случае необходимости надо переопределить один или все виртуальные методы parse:

virtual void parse( UniSetTypes::SensorMessage* sm );
virtual void parse( UniSetTypes::DBMessage* dbmsg );
virtual void parse( UniSetTypes::InfoMessage* imsg );
virtual void parse( UniSetTypes::AlarmMessage* amsg );
virtual void parse( UniSetTypes::ConfirmMessage* cmsg );