UniSet 2.44.3
Класс uniset::UniSetObject

#include <UniSetObject.h>

Граф наследования:uniset::UniSetObject:
Граф связей класса uniset::UniSetObject:

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

 UniSetObject (const std::string &name, const std::string &section)
 UniSetObject (uniset::ObjectId id)
virtual CORBA::Boolean exist () override
virtual uniset::ObjectId getId () override
const uniset::ObjectId getId () const
std::string getName () const
virtual uniset::ObjectType getType () override
const std::string getStrType ()
virtual uniset::SimpleInfogetInfo (const char *userparam="") override
virtual uniset::SimpleInfoapiRequest (const char *query) override
virtual void push (const uniset::TransportMessage &msg) override
 поместить сообщение в очередь
virtual void pushMessage (const char *msg, ::CORBA::Long mtype, const ::uniset::Timespec &tm, const ::uniset::ProducerInfo &pi, ::CORBA::Long priority, ::CORBA::Long consumer) override
 поместить текстовое сообщение в очередь
virtual Poco::JSON::Object::Ptr httpRequest (const UHttp::HttpRequestContext &ctx) override
virtual Poco::JSON::Object::Ptr httpHelp (const Poco::URI::QueryParameters &p) override
uniset::ObjectPtr getRef () const
std::shared_ptr< UniSetObjectget_ptr ()
virtual timeout_t askTimer (uniset::TimerId timerid, timeout_t timeMS, clock_t ticks=-1, uniset::Message::Priority p=uniset::Message::High) override
Открытые члены унаследованные от uniset::LT_Object
timeout_t checkTimers (UniSetObject *obj)
timeout_t getTimeInterval (uniset::TimerId timerid) const
timeout_t getTimeLeft (uniset::TimerId timerid) const

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

virtual void processingMessage (const uniset::VoidMessage *msg)
virtual void sysCommand (const uniset::SystemMessage *sm)
virtual void sensorInfo (const uniset::SensorMessage *sm)
virtual void timerInfo (const uniset::TimerMessage *tm)
virtual void onTextMessage (const uniset::TextMessage *tm)
VoidMessagePtr receiveMessage ()
VoidMessagePtr waitMessage (timeout_t msec=UniSetTimer::WaitUpTime)
void termWaiting ()
size_t countMessages ()
size_t getCountOfLostMessages () const
virtual bool activateObject ()
 Активизация объекта (переопределяется для необходимых действий после активизации).
virtual bool deactivateObject ()
 Деактивация объекта (переопределяется для необходимых действий при завершении работы).
void uterminate ()
void thread (bool create)
void offThread ()
void onThread ()
virtual void callback ()
void setID (uniset::ObjectId id)
void setThreadPriority (Poco::Thread::Priority p)
void setMaxSizeOfMessageQueue (size_t s)
size_t getMaxSizeOfMessageQueue () const
bool isActive () const
void setActive (bool set)
virtual Poco::JSON::Object::Ptr httpGetMyInfo (Poco::JSON::Object::Ptr root)
Poco::JSON::Object::Ptr request_configure (const std::string &req, const Poco::URI::QueryParameters &p)
Poco::JSON::Object::Ptr request_configure_get (const std::string &req, const Poco::URI::QueryParameters &p)
Poco::JSON::Object::Ptr request_configure_by_name (const std::string &name, const std::string &props)
Poco::JSON::Object::Ptr request_params (const std::string &req, const Poco::URI::QueryParameters &p)
virtual Poco::JSON::Object::Ptr request_params_get (const std::string &req, const Poco::URI::QueryParameters &p)
virtual Poco::JSON::Object::Ptr request_params_set (const std::string &req, const Poco::URI::QueryParameters &p)
Защищенные члены унаследованные от uniset::LT_Object
virtual std::string getTimerName (int id) const
TimersList getTimersList () const

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

std::shared_ptr< UInterfaceui
std::string myname
std::weak_ptr< UniSetManager > mymngr
Защищенные данные унаследованные от uniset::LT_Object
timeout_t sleepTime

Друзья

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

Дополнительные унаследованные члены

Защищенные типы унаследованные от uniset::LT_Object
typedef std::deque< TimerInfoTimersList

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

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

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

Имеется три очереди сообщений, по приоритетам: Hi, Medium, Low. Соответственно сообщения вынимаются в порядке поступления, но сперва из Hi, потом из Medium, а потом из Low очереди.

Предупреждения
Если сообщения будут поступать в Hi или Medium очередь быстрее чем они обрабатываются, то до Low сообщений дело может и не дойти.

Конструктор(ы)

◆ UniSetObject()

uniset::UniSetObject::UniSetObject ( const std::string & name,
const std::string & section )
Предупреждения
UniversalInterface не инициализируется идентификатором объекта

Методы

◆ activateObject()

bool uniset::UniSetObject::activateObject ( )
protectedvirtual

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

Переопределяется в JSProxy_SK, LostTestProc_SK, TestProc_SK, TestProc_SK, TestProc_SK, uniset::DBServer, uniset::IOControl, uniset::IOController, uniset::IONotifyController, uniset::MBExchange, uniset::MBSlave, uniset::OPCUAExchange, uniset::PassiveLProcessor, uniset::ProxyManager, uniset::SharedMemory, uniset::UNetExchange, uniset::UniSetManager, uniset::UWebSocketGate и UObject_SK.

◆ askTimer()

timeout_t uniset::UniSetObject::askTimer ( uniset::TimerId timerid,
timeout_t timeMS,
clock_t ticks = -1,
uniset::Message::Priority p = uniset::Message::High )
overridevirtual

заказ таймера (вынесена в public, хотя должна была бы быть в protected

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

◆ callback()

void uniset::UniSetObject::callback ( )
protectedvirtual

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

Переопределяется в JSProxy_SK, LostTestProc_SK, TestProc_SK, TestProc_SK, TestProc_SK, uniset::BackendClickHouse, uniset::BackendOpenTSDB, uniset::JSProxy, uniset::OPCUAServer и UObject_SK.

◆ countMessages()

size_t uniset::UniSetObject::countMessages ( )
protected

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

◆ deactivateObject()

bool uniset::UniSetObject::deactivateObject ( )
protectedvirtual

◆ getCountOfLostMessages()

size_t uniset::UniSetObject::getCountOfLostMessages ( ) const
protected

количество потерянных сообщений

◆ getInfo()

uniset::SimpleInfo * uniset::UniSetObject::getInfo ( const char * userparam = "")
overridevirtual

Переопределяется в uniset::IONotifyController.

◆ getMaxSizeOfMessageQueue()

size_t uniset::UniSetObject::getMaxSizeOfMessageQueue ( ) const
protected

получить размер очереди сообщений

◆ getRef()

ObjectPtr uniset::UniSetObject::getRef ( ) const

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

◆ httpHelp()

Poco::JSON::Object::Ptr uniset::UniSetObject::httpHelp ( const Poco::URI::QueryParameters & p)
overridevirtual

Замещает uniset::UHttp::IHttpRequest.

◆ httpRequest()

Poco::JSON::Object::Ptr uniset::UniSetObject::httpRequest ( const UHttp::HttpRequestContext & ctx)
overridevirtual

Замещает uniset::UHttp::IHttpRequest.

◆ isActive()

bool uniset::UniSetObject::isActive ( ) const
protected

проверка "активности" объекта

◆ offThread()

void uniset::UniSetObject::offThread ( )
protected

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

◆ onThread()

void uniset::UniSetObject::onThread ( )
protected

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

◆ processingMessage()

void uniset::UniSetObject::processingMessage ( const uniset::VoidMessage * msg)
protectedvirtual

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

Переопределяется в JSProxy_SK, LostTestProc_SK, TestProc_SK, TestProc_SK, TestProc_SK, uniset::DBServer, uniset::ProxyManager и UObject_SK.

◆ push()

void uniset::UniSetObject::push ( const uniset::TransportMessage & msg)
overridevirtual

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

◆ pushMessage()

void uniset::UniSetObject::pushMessage ( const char * msg,
::CORBA::Long mtype,
const ::uniset::Timespec & tm,
const ::uniset::ProducerInfo & pi,
::CORBA::Long priority,
::CORBA::Long consumer )
overridevirtual

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

◆ receiveMessage()

VoidMessagePtr uniset::UniSetObject::receiveMessage ( )
protected

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

Аргументы
vm- указатель на структуру, которая заполняется, если есть сообщение
Возвращает
Возвращает указатель VoidMessagePtr если сообщение есть, и shared_ptr(nullptr) если нет

◆ setActive()

void uniset::UniSetObject::setActive ( bool set)
protected

false - завершить работу потока обработки сообщений

◆ setID()

void uniset::UniSetObject::setID ( uniset::ObjectId id)
protected

установка ID объекта

◆ setMaxSizeOfMessageQueue()

void uniset::UniSetObject::setMaxSizeOfMessageQueue ( size_t s)
protected

установка размера очереди сообщений

◆ setThreadPriority()

void uniset::UniSetObject::setThreadPriority ( Poco::Thread::Priority p)
protected

установить приоритет для потока обработки сообщений (если позволяют права и система)

◆ termWaiting()

void uniset::UniSetObject::termWaiting ( )
protected

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

◆ thread()

void uniset::UniSetObject::thread ( bool create)
protected

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

◆ waitMessage()

VoidMessagePtr uniset::UniSetObject::waitMessage ( timeout_t msec = UniSetTimer::WaitUpTime)
protected

Ожидать сообщения заданное время

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

◆ ui

std::shared_ptr<UInterface> uniset::UniSetObject::ui
protected

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