UniSet  1.4.0
Сервисы

Сервер БД

См. также:
(DBServer_MySQL) Реализация сервиса ведения БД на основе MySQL

Сервер БД

Общие сведения

Предназначен для работы с БД. Основная задача это - сохрание информации о датчиках, ведение журнала сообщений.

Сценарий работы

На узле, где ведётся БД запускается один экземпляр сервиса. Клиенты могут получить доступ, несколькими способами:

Сервис является системным, поэтому его идентификатор можно получить при помощи UniSetTypes::Configuration::getDBServer() объекта UniSetTypes::conf.

Реализацию см. (DBServer_MySQL) Реализация сервиса ведения БД на основе MySQL

Сервис сообщений

Общие сведения

В его задачи входит обработка всех сообщений для оператора. При приходе сообщения он производит следующие действия:

Сценарий работы

На узле, где ведётся БД запускается один экземпляр сервиса. Клиенты могут получить доступ, несколькими способами:

Сервис является системным, поэтому его идентификатор можно получить при помощи UniSetTypes::Configuration::getInfoServer() объекта UniSetTypes::conf.

Интерфейс

InfoServer позволяет заказывать уведомелние о приходе тех или иных сообщений, а также подтверждения(квитирования). Можно производить заказ сообщения по коду

или сразу из диапазона кодов

Реализацию см. InfoServer

Сервис таймеров

Общие сведения

Данный сервис предоставляет возможность заказа переодических сообщений UniSetTypes::TimerMessage т.е. таймеров. Каждый заказчик может заказывать несколько таймеров, различающихся идентификаторами. При этом идентификаторы определяет сам заказчик. Они должны быть уникальны только для одного заказчика.

Заметки:
Сервис не гарантирует реальное время и точное соблюдение интервала. Т.к. к указанному в заказе времени добавляется время на обработку и посылку сообщения, но при достаточных системных ресурсах точность увеличивается.

Сценарий работы

На узле запускается один экземпляр сервиса. Клиенты могут получить доступ, несколькими способами:

Сервис является системным, поэтому его идентификатор можно получить при помощи UniSetTypes::Configuration::getTimerService() объекта UniSetTypes::conf.

Интерфейс

Сервис предоставляет одну функцию

        void TimerService::askTimer( CORBA::Short timerid, CORBA::Long timeMS, const UniSetTypes::ConsumerInfo& ci,
                                CORBA::Short ticks)

при помощи которой осуществялется заказ таймера.

Аргументы:
timerid- уникальный идентификатор таймера
В случае попытки заказать таймер с уже существующим (для данного заказчика) идентификатором вырабатывается исключение TimerService_i::TimerAlreadyExist.
Аргументы:
timeMS- период между уведомлениями. Для отказа от таймера необходимо указать timeMS=0.
ticksпозволяет ограничить количество уведомлений.
Если ticks<0 уведомления будут посылатся, пока заказчик сам не откажется от них. Общее количество таймеров (на всех заказчиков) ограничено ( TimerService::MaxCountTimers ). В случае превышения данного предела на все заказы будет вырабатываться исключение TimerService_i::LimitTimers. Для преодоления этого ограничения, а так же для обеспечения оптимальной работы сервиса, можно запускать на одном узле несколько TimerService-ов для распределения нагрузки(заказов) между ними. При этом за распределение заказов отвечает, разработчик.

Время жизни заказа

Для того, чтобы оптимизировать работу сервиса и уменьшить на него нагрузку вводится понятие "время жизни заказа". В случае, если в течение TimerService::AskLifeTimeSEC не удаётся послать заказчику уведомление, в следствие его недоступности - заказ анулируется.

Заметки:
Параметры можно задавать в конфигурационном файле Реализацию см. TimerService