UniSet  2.0.0
Классы | Открытые типы | Открытые члены | Защищенные члены | Защищенные данные | Друзья
Класс IONotifyController

#include <IONotifyController.h>

Граф наследования:IONotifyController:
IOController UniSetManager UniSetObject IONotifyController_LT NullController SharedMemory SharedMemory

Полный список членов класса

Классы

struct  ConsumerInfoExt
struct  ConsumerListInfo
struct  ThresholdInfoExt
struct  ThresholdsListInfo

Открытые типы

typedef std::list
< ConsumerInfoExt
ConsumerList
typedef std::map
< UniSetTypes::KeyType,
ConsumerListInfo
AskMap
typedef std::list
< ThresholdInfoExt
ThresholdExtList
typedef std::map
< UniSetTypes::KeyType,
ThresholdsListInfo
AskThresholdMap

Открытые члены

 IONotifyController (const std::string &name, const std::string &section, NCRestorer *dumper=0)
 IONotifyController (const UniSetTypes::ObjectId id, NCRestorer *dumper=0)
virtual UniSetTypes::ObjectType getType () override
virtual void askSensor (const UniSetTypes::ObjectId sid, const UniSetTypes::ConsumerInfo &ci, UniversalIO::UIOCommand cmd) override
virtual void askThreshold (const UniSetTypes::ObjectId sid, const UniSetTypes::ConsumerInfo &ci, UniSetTypes::ThresholdId tid, CORBA::Long lowLimit, CORBA::Long hiLimit, CORBA::Boolean invert, UniversalIO::UIOCommand cmd) override
virtual
IONotifyController_i::ThresholdInfo 
getThresholdInfo (const UniSetTypes::ObjectId sid, UniSetTypes::ThresholdId tid) override
virtual
IONotifyController_i::ThresholdList
getThresholds (const UniSetTypes::ObjectId sid) override
virtual
IONotifyController_i::ThresholdsListSeq * 
getThresholdsList () override
virtual UniSetTypes::IDSeqaskSensorsSeq (const UniSetTypes::IDSeq &lst, const UniSetTypes::ConsumerInfo &ci, UniversalIO::UIOCommand cmd) override
virtual void localSetValue (IOController::IOStateList::iterator &it, UniSetTypes::ObjectId sid, CORBA::Long value, UniSetTypes::ObjectId sup_id) override

Защищенные члены

virtual bool activateObject () override
virtual void initItem (IOStateList::iterator &it, IOController *ic)
bool myIOFilter (const USensorInfo &ai, CORBA::Long newvalue, UniSetTypes::ObjectId sup_id)
virtual void send (ConsumerListInfo &lst, UniSetTypes::SensorMessage &sm)
 посылка информации об изменении состояния датчика
virtual void checkThreshold (IOStateList::iterator &li, const UniSetTypes::ObjectId sid, bool send=true)
 проверка срабатывания пороговых датчиков
ThresholdExtList::iterator findThreshold (const UniSetTypes::ObjectId sid, const UniSetTypes::ThresholdId tid)
 поиск информации о пороговом датчике
virtual void loggingInfo (UniSetTypes::SensorMessage &sm)
 сохранение информации об изменении состояния датчика в базу
virtual void dumpOrdersList (const UniSetTypes::ObjectId sid, const IONotifyController::ConsumerListInfo &lst)
virtual void dumpThresholdList (const UniSetTypes::ObjectId sid, const IONotifyController::ThresholdExtList &lst)
virtual void readDump ()
void onChangeUndefinedState (IOStateList::iterator &it, IOController *ic)

Защищенные данные

NCRestorerrestorer

Друзья

class NCRestorer

Подробное описание

Необходимо сделать:
Сделать логирование выходов

Заказ датчиков

.... ConsumerMaxAttempts - максимальное число неудачных попыток послать сообщение "заказчику". Настраивается в конфигурационном файле. По умолчанию = 5.


Определения типов

словарь: датчик -> список потребителей

словарь: аналоговый датчик --> список порогов по нему

список порогов (информация по каждому порогу)


Методы

bool IONotifyController::activateObject ( ) [override, protected, virtual]
Заметки:
Переопределяя не забывайте вызвать базовую

Регистрирация объекта и всех его подобъектов в репозитории.

Заметки:
Только после этого он (и они) становятся доступны другим процессам

Переопределяет метод предка IOController.

Переопределяется в SharedMemory и SharedMemory.

Перекрестные ссылки readDump().

void IONotifyController::askSensor ( const UniSetTypes::ObjectId  sid,
const UniSetTypes::ConsumerInfo ci,
UniversalIO::UIOCommand  cmd 
) [override, virtual]
Аргументы:
si- информация о датчике
ci- информация о заказчике
cmd- команда см. UniversalIO::UIOCommand

Перекрестные ссылки UniSetObject_i::getId(), UniSetTypes::ConsumerInfo::id, UniSetTypes::ConsumerInfo::node, UniversalIO::UIODontNotify, UniversalIO::UIONotify, UniversalIO::UIONotifyFirstNotNull и UniSetTypes::uniset_conf().

void IONotifyController::checkThreshold ( IOStateList::iterator &  li,
const UniSetTypes::ObjectId  sid,
bool  send = true 
) [protected, virtual]

проверка срабатывания пороговых датчиков

Перекрестные ссылки UniSetTypes::uniset_conf().

void IONotifyController::dumpOrdersList ( const UniSetTypes::ObjectId  sid,
const IONotifyController::ConsumerListInfo lst 
) [protected, virtual]

сохранение списка заказчиков По умолчанию делает dump, если объявлен dumper.

Переопределяется в SharedMemory и SharedMemory.

void IONotifyController::dumpThresholdList ( const UniSetTypes::ObjectId  sid,
const IONotifyController::ThresholdExtList lst 
) [protected, virtual]

сохранение списка заказчиков пороговых датчиков По умолчанию делает dump, если объявлен dumper.

Переопределяется в SharedMemory и SharedMemory.

IONotifyController::ThresholdExtList::iterator IONotifyController::findThreshold ( const UniSetTypes::ObjectId  sid,
const UniSetTypes::ThresholdId  tid 
) [protected]

поиск информации о пороговом датчике

Предупреждения:
На самом деле список разрешает иметь много порогов с одинаковым ID, для разных "заказчиков". Но здесь мы возвращаем первый встретившийся..

Перекрестные ссылки UniSetTypes::uniset_conf().

void IONotifyController::loggingInfo ( UniSetTypes::SensorMessage sm) [protected, virtual]

сохранение информации об изменении состояния датчика в базу

Переопределяется в SharedMemory и SharedMemory.

Перекрестные ссылки IOController::logging().

void IONotifyController::readDump ( ) [protected, virtual]

чтение dump-файла

Используется в activateObject().

void IONotifyController::send ( ConsumerListInfo lst,
UniSetTypes::SensorMessage sm 
) [protected, virtual]

посылка информации об изменении состояния датчика

Заметки:
В случае зависания в функции push, будут остановлены рассылки другим объектам. Возможно нужно ввести своего агента на удалённой стороне, который будет заниматься только приёмом сообщений и локальной рассылкой. Lav

Перекрестные ссылки UInterface::resolve(), UniSetObject::ui и UniSetTypes::uniset_conf().


Объявления и описания членов классов находятся в файлах: