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

#include <UniSetObject.h>

Граф наследования:UniSetObject:
LT_Object DBServer IOControl MBExchange MBSlave PassiveLProcessor ProxyManager SMonitor UNetExchange UniSetManager UObject_SK

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

Классы

struct  PriorVMsgCompare

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

 UniSetObject (const std::string &name, const std::string &section)
 UniSetObject (UniSetTypes::ObjectId id)
std::shared_ptr< UniSetObjectget_ptr ()
virtual CORBA::Boolean exist () override
virtual UniSetTypes::ObjectId getId () override
const UniSetTypes::ObjectId getId () const
std::string getName ()
virtual UniSetTypes::ObjectType getType () override
virtual UniSetTypes::SimpleInfogetInfo (::CORBA::Long userparam=0) override
virtual void push (const UniSetTypes::TransportMessage &msg) override
 поместить сообщение в очередь
UniSetTypes::ObjectPtr getRef () const
virtual timeout_t askTimer (UniSetTypes::TimerId timerid, timeout_t timeMS, clock_t ticks=-1, UniSetTypes::Message::Priority p=UniSetTypes::Message::High) override

Защищенные типы

typedef std::priority_queue
< UniSetTypes::VoidMessage,
std::vector
< UniSetTypes::VoidMessage >
, PriorVMsgCompare
MessagesQueue

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

virtual void processingMessage (UniSetTypes::VoidMessage *msg)
virtual void sysCommand (const UniSetTypes::SystemMessage *sm)
virtual void sensorInfo (const UniSetTypes::SensorMessage *sm)
virtual void timerInfo (const UniSetTypes::TimerMessage *tm)
bool receiveMessage (UniSetTypes::VoidMessage &vm)
unsigned int countMessages ()
void termWaiting ()
virtual bool deactivateObject ()
 Дизактивизация объекта (переопределяется для необходимых действий перед деактивацией)
virtual bool activateObject ()
 Активизация объекта (переопределяется для необходимых действий после активизации)
void thread (bool create)
void offThread ()
void onThread ()
virtual void callback ()
virtual void sigterm (int signo)
void terminate ()
virtual bool waitMessage (UniSetTypes::VoidMessage &msg, timeout_t timeMS=UniSetTimer::WaitUpTime)
void setID (UniSetTypes::ObjectId id)
void setMaxSizeOfMessageQueue (size_t s)
unsigned int getMaxSizeOfMessageQueue ()
void setMaxCountRemoveOfMessage (size_t m)
unsigned int getMaxCountRemoveOfMessage ()
virtual void cleanMsgQueue (MessagesQueue &q)
bool isActive ()
void setActive (bool set)
void setThreadPriority (int p)

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

std::shared_ptr< UInterfaceui
std::string myname
std::string section
UniSetTypes::VoidMessage msg
std::weak_ptr< UniSetManagermymngr

Друзья

class UniSetManager
class UniSetActivator
std::ostream & operator<< (std::ostream &os, UniSetObject &obj)

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

Класс задает такие свойства объекта как: получение сообщений, помещение сообщения в очередь и т.п. Для ожидания сообщений используется функция waitMessage(), основанная на таймере. Ожидание прерывается либо по истечении указанного времени, либо по приходу сообщения, при помощи функциии termWaiting() вызываемой из push().

Заметки:
Если не будет задан ObjectId(-1), то поток обработки запущен не будет. Также создание потока можно принудительно отключить при помощи функции void thread(). Ее необходимо вызвать до активации объекта (например в конструкторе). При этом ответственность за вызов receiveMessage() и processingMessage() возлагается на разработчика.

Методы

virtual bool UniSetObject::activateObject ( ) [inline, protected, virtual]

Активизация объекта (переопределяется для необходимых действий после активизации)

Переопределяется в MBSlave, SharedMemory, IOControl, IONotifyController, MBExchange, IOController, UObject_SK, UniSetManager, UNetExchange, DBServer, ProxyManager и PassiveLProcessor.

timeout_t UniSetObject::askTimer ( UniSetTypes::TimerId  timerid,
timeout_t  timeMS,
clock_t  ticks = -1,
UniSetTypes::Message::Priority  p = UniSetTypes::Message::High 
) [override, virtual]

заказ таймера

Аргументы:
timerid- идентификатор таймера
timeMS- период. 0 - означает отказ от таймера
ticks- количество уведомлений. "-1"- постоянно
p- приоритет присылаемого сообщения
Возвращает:
Возвращает время [мсек] оставшееся до срабатывания очередного таймера

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

Перекрестные ссылки termWaiting() и UniSetTimer::WaitUpTime.

void UniSetObject::callback ( ) [protected, virtual]

функция вызываемая из потока

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

Перекрестные ссылки LT_Object::checkTimers(), processingMessage(), LT_Object::sleepTime и waitMessage().

void UniSetObject::cleanMsgQueue ( MessagesQueue &  q) [protected, virtual]

Вызывается при переполнеии очереди сообщений (в двух местах push и receive) для очитски очереди.

Предупреждения:
По умолчанию удаляет из очереди все повторяющиеся
  • SensorMessage
  • TimerMessage
  • SystemMessage Если не помогло удаляет из очереди UniSetObject::MaxCountRemoveOfMessage
Заметки:
Для специфичной обработки может быть переопределена
Предупреждения:
Т.к. при фильтровании SensorMessage не смотрится значение, то при удалении сообщений об изменении аналоговых датчиков очистка может привести к некорректной работе фильрующих алгоритмов работающих с "выборкой" последних N значений. (потому-что останется одно последнее)

Перекрестные ссылки UniSetTypes::TimerMessage::id и UniSetTypes::key().

Используется в push() и receiveMessage().

unsigned int UniSetObject::countMessages ( ) [protected]

текущее количесво сообщений в очереди

virtual bool UniSetObject::deactivateObject ( ) [inline, protected, virtual]

Дизактивизация объекта (переопределяется для необходимых действий перед деактивацией)

Переопределяется в MBSlave, SharedMemory, IOController, UniSetManager, ProxyManager и MBTCPPersistentSlave.

получить ссылку (на себя)

Используется в ProxyManager::activateObject() и IOController::ioRegistration().

void UniSetObject::offThread ( ) [inline, protected]

отключение потока обработки сообщений

Используется в UniSetActivator::run().

void UniSetObject::onThread ( ) [inline, protected]

включение потока обработки сообщений

void UniSetObject::processingMessage ( UniSetTypes::VoidMessage msg) [protected, virtual]

обработка приходящих сообщений

Переопределяется в UObject_SK, DBServer и ProxyManager.

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

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

void UniSetObject::push ( const UniSetTypes::TransportMessage msg) [override, virtual]

поместить сообщение в очередь

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

Используется в LT_Object::checkTimers().

Получить сообщение

Аргументы:
vm- указатель на структуру, которая заполняется если есть сообщение
Возвращает:
Возвращает true если сообщение есть, и false если нет

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

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

void UniSetObject::sigterm ( int  signo) [protected, virtual]

Функция вызываемая при приходе сигнала завершения или прерывания процесса. Переопределив ее можно выполнять специфичные для процесса действия по обработке сигнала. Например переход в безопасное состояние.

Предупреждения:
В обработчике сигналов ЗАПРЕЩЕНО вызывать функции подобные exit(..), abort()!!!!

Переопределяется в MBSlave, SharedMemory, IOControl, MBExchange, MBTCPMultiMaster, MBTCPMaster, UObject_SK, UNetExchange, UniSetManager, UniExchange, PassiveLProcessor, DBServer_PostgreSQL, MBSlave, MBTCPPersistentSlave и SMonitor.

void UniSetObject::termWaiting ( ) [protected]

прервать ожидание сообщений

Используется в askTimer() и push().

void UniSetObject::thread ( bool  create) [inline, protected]

запрет(разрешение) создания потока для обработки сообщений

bool UniSetObject::waitMessage ( UniSetTypes::VoidMessage msg,
timeout_t  timeMS = UniSetTimer::WaitUpTime 
) [protected, virtual]

Ожидать сообщения timeMS

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

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


Данные класса

std::shared_ptr<UInterface> UniSetObject::ui [protected]

универсальный интерфейс для работы с другими процессами

Используется в ProxyManager::activateObject(), ProxyManager::deactivateObject(), IOController::ioRegistration(), IOController::ioUnRegistration() и IOController::logging().


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