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

#include <UniSetObject.h>

Граф наследования:UniSetObject:
InfoServer IOControl IOControl ObjectsManager ProxyManager TestGen_SK TestGenAlone_SK TimerService UniSetObject_LT UObject_SK

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

Классы

struct  PriorVMsgCompare

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

 UniSetObject (const std::string name, const std::string section)
 UniSetObject (UniSetTypes::ObjectId id)
virtual CORBA::Boolean exist ()
virtual char * getName ()
virtual UniSetTypes::ObjectId getId ()
virtual UniSetTypes::ObjectType getType ()
virtual UniSetTypes::SimpleInfogetInfo ()
virtual void push (const UniSetTypes::TransportMessage &msg)
 поместить сообщение в очередь
UniSetTypes::ObjectPtr getRef ()

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

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

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

virtual void processingMessage (UniSetTypes::VoidMessage *msg)
bool receiveMessage (UniSetTypes::VoidMessage &vm)
unsigned int countMessages ()
void termWaiting ()
virtual bool disactivateObject ()
 Дизактивизация объекта (переопределяется для необходимых действий перед деактивацией)
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 (unsigned int s)
unsigned int getMaxSizeOfMessageQueue ()
void setMaxCountRemoveOfMessage (unsigned int m)
unsigned int getMaxCountRemoveOfMessage ()
virtual void cleanMsgQueue (MessagesQueue &q)
void setRecvMutexTimeout (unsigned long msec)
unsigned long getRecvMutexTimeout ()
void setPushMutexTimeout (unsigned long msec)
unsigned long getPushMutexTimeout ()
bool isActive ()
void setActive (bool set)

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

UniversalInterface ui
std::string myname
std::string section
UniSetTypes::VoidMessage msg
ObjectsManagermymngr

Друзья

class ObjectsManager
class ObjectsActivator
class ThreadCreator< UniSetObject >
std::ostream & operator<< (std::ostream &os, UniSetObject &obj)

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

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

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

Методы

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

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

Переопределяется в SharedMemory, SharedMemory, IOControl, IOControl, IOController, IONotifyController, MBExchange, MBExchange, TimerService, MBSlave, MBSlave, InfoServer, ObjectsManager, UNetExchange, UNetExchange, TestGen_SK, TestGenAlone_SK, DBServer, ProxyManager и UObject_SK.

Используется в UNetExchange::activateObject(), InfoServer::activateObject() и TimerService::activateObject().

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

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

Переопределяется в TestGen_SK, TestGenAlone_SK, IONotifyController_LT, ObjectsManager_LT, UniSetObject_LT и UObject_SK.

Перекрестные ссылки UniExchange::processingMessage() и waitMessage().

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

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

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

Перекрестные ссылки DebugStream::debugging(), UniSetTypes::TimerMessage::id и UniSetTypes::unideb.

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

unsigned int UniSetObject::countMessages ( ) [protected]

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

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

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

Переопределяется в IOController, TimerService, ObjectsManager и ProxyManager.

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

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

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

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

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

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

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

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

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

Перекрестные ссылки cleanMsgQueue(), DebugStream::debugging(), termWaiting() и UniSetTypes::unideb.

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

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

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

Перекрестные ссылки cleanMsgQueue(), DebugStream::debugging() и UniSetTypes::unideb.

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

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

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

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

Переопределяется в SharedMemory, SharedMemory, IOControl, IOControl, MBExchange, MBExchange, TimerService, MBSlave, MBSlave, ObjectsManager, UNetExchange, UNetExchange, TestGen_SK, TestGenAlone_SK, UniExchange, UniExchange, SystemGuard, UObject_SK, PassiveLProcessor, PassiveLProcessor, MBSlave, SMonitor, TestGen и TestGenAlone.

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

void UniSetObject::termWaiting ( ) [protected]

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

Используется в IONotifyController_LT::askTimer(), UniSetObject_LT::askTimer(), ObjectsManager_LT::askTimer() и push().

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

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

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

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

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

Используется в IONotifyController_LT::callback(), UniSetObject_LT::callback(), ObjectsManager_LT::callback() и callback().


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

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

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

Используется в ProxyManager::activateObject(), TimerService::askTimer(), IOController::asRegistration(), ProxyManager::disactivateObject(), IOController::dsRegistration(), IOController::logging(), TimerService::send(), IONotifyController::send(), IOController::sUnRegistration() и TimerService::work().


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