Пространства имен | |
namespace | so_4 |
namespace | so_4::rt |
Функции для вызова метода-события в зависимости от его формата. | |
template<class A, class A2> | |
void | so_4::rt::call_event (A *a, void(A2::*evt)(), const event_data_t &e) |
template<class A, class A2> | |
void | so_4::rt::call_event (A *a, void(A2::*evt)(const event_data_t &), const event_data_t &e) |
template<class A, class A2, class M> | |
void | so_4::rt::call_event (A *a, void(A2::*evt)(const event_data_t &, const M *), const event_data_t &e, const M *m) |
template<class A, class A2, class M> | |
void | so_4::rt::call_event (A *a, void(A2::*evt)(const event_data_t &, const M &), const event_data_t &e, const M *m) |
template<class A, class A2, class M> | |
void | so_4::rt::call_event (A *a, void(A2::*evt)(const M *), const event_data_t &e, const M *m) |
template<class A, class A2, class M> | |
void | so_4::rt::call_event (A *a, void(A2::*evt)(const M &), const event_data_t &e, const M *m) |
Макросы | |
#define | _SO_4_RT__SOL_HPP_ |
#define | __SOL4_CLASS_NAMESPACE_NAME(line) |
#define | __SOL4_CLASS_START(full_cpp_name, line) |
#define | SOL4_CLASS_START(full_cpp_name) |
Начало описания класса агента. | |
#define | SOL4_CLASS_FINISH() |
Завершение описания класса агента. | |
#define | __SOL4_SUPER_CLASS_BINDER_NAME(line) |
#define | __SOL4_SUPER_CLASS(name, line) |
#define | SOL4_SUPER_CLASS(name) |
Указание имени базового класса. | |
#define | SOL4_MSG_START(sol_name, full_cpp_name) |
Начало описания сообщения. | |
#define | SOL4_MSG_FINISH() |
Завершение описания сообщения. | |
#define | SOL4_MSG_FIELD(field_name) |
Описание поля, являющегося одиночным объектом. | |
#define | SOL4_MSG_FIELD_ARRAY(field_name) |
Описание поля, являющегося вектором. | |
#define | SOL4_MSG_CHECKER(full_cpp_method_name) |
Описание функции проверки экземпляра сообщения. | |
#define | SOL4_EVENT(event_name) |
Описание события. | |
#define | SOL4_EVENT_WITH_INCIDENT_TYPE(event_name, msg_type) |
Описание события с автоматическим контролем типа инцидента. | |
#define | SOL4_EVENT_STC(event_name, msg_type) |
Описание события с контролем типа инцидента при подписке. | |
#define | SOL4_EVENT_WITH_FACTORY(event_name, factory) |
Описание события со специфическим внутренним представлением. | |
#define | SOL4_STATE_START(state_name) |
Начало описания состояния. | |
#define | SOL4_STATE_EVENT(event_name) |
Событие, разрешенное к обработке в состоянии. | |
#define | SOL4_STATE_ON_ENTER(method) |
Описание обработчика входа в состояние. | |
#define | SOL4_STATE_ON_EXIT(method) |
Описание обработчика выхода из состояния. | |
#define | SOL4_STATE_FINISH() |
Завершение описания состояния. | |
#define | __SOL4_STATE_MERGE_VARIABLE(line) |
#define | __SOL4_STATE_MERGE(class_name, state_name, line) |
#define | SOL4_STATE_MERGE(class_name, state_name) |
Указание того, что содержимое состояние должно быть слито с содержимым указанного состояния. | |
#define | __SOL4_STATE_EXCLUDE_EVENT_VARIABLE(line) |
#define | __SOL4_STATE_EXCLUDE_EVENT(event_name, line) |
#define | SOL4_STATE_EXCLUDE_EVENT(event_name) |
Изъятия из списка разрешенных событий указанного события. | |
#define | SOL4_CHANGE_STATE_NOTIFY() |
состояния агента. | |
#define | SOL4_INITIAL_STATE(name) |
Указание имени начального состояния агента. | |
#define | SOL4_SUBSCR_EVENT_START(event_name, priority) |
Начало подписки события. | |
#define | SOL4_SUBSCR_EVENT_MSG_SELF(message) |
Подписать событие на собственное сообщение агента. | |
#define | SOL4_SUBSCR_EVENT_MSG(agent, message) |
Подписать событие на сообщение агента. | |
#define | SOL4_SUBSCR_EVENT_FINISH() |
Завершение подписки события. | |
#define | SOL4_SUBSCR_EVENT_FINISH_CERR() |
Завершение подписки события с печатью ошибок в cerr. |
|
состояния агента. Делает агента владельцем сообщения с именем "so_msg_state", реализуемого типом so_4::rt::so_msg_state.
|
|
Завершение описания класса агента. Этот макрос завершает описание класса агента, начатое макросом SOL4_CLASS_START().
|
|
|
Описание события. Этот макрос может использоваться для описания обработчиков событий, которые не получают указатель (ссылку) на экземпляр инцидента в виде отдельного параметра. Т.е. для обработчиков формата: void A::evt(); void A::evt( const event_data_t & );
|
|
Описание события с контролем типа инцидента при подписке.
void A::evt_handler( const so_4::rt::event_data_t &, const M * cmd ); void A::evt_handler( const so_4::rt::event_data_t &, const M & cmd ); void A::evt_handler( const M * cmd ); void A::evt_handler( const M & cmd ); При подписке данного события будет проверена совместимость реального типа инцидента и разрешенного типа инцидента. Если реальный тип инцидента окажется не совместимым, то подписка события окажется неудачной. Отличие этого макроса от макроса SOL4_EVENT_WITH_INCIDENT_TYPE() состоит в том, что описываемые с помощью этого макроса обработчики константный указатель (ссылка) на инцидент.
|
|
Описание события со специфическим внутренним представлением. Для каждого события внутри SObjectizer-а создается внутренне представление, определяющее логику обработки сообытия. В большинстве случаев используется "общая" логика обработки события. Но в некоторых случаях (например, для поддержки SOP) необходимо применять "специфическую" логику. Для этих случаев предназначен макрос SOL4_EVENT_WITH_FACTORY.
|
|
Описание события с автоматическим контролем типа инцидента. Предназначен для описания обработчиков событий, имеющих один из следующих форматов: void A::evt_handler( const so_4::rt::event_data_t &, const msg_type * cmd ); void A::evt_handler( const so_4::rt::event_data_t &, msg_type * cmd ); При подписке данного события будет проверена совместимость реального типа инцидента и разрешенного типа инцидента. Если реальный тип инцидента окажется не совместимым, то подписка события окажется неудачной.
|
|
Указание имени начального состояния агента. Если класс ничего не наследует, то начальным состоянием агентов этого класса будет первое из описанных в классе состояний. При наличии наследования, особенно множественного, необходимо явно указывать, какое состояние является начальным для агентов данного класса. Макрос SOL4_INITIAL_STATE() предназначен для того, чтобы указать имя начального состояния. В описании класса должно быть указано только одно стартовое состояние. Имя указываемого в SOL4_INITIAL_STATE() состояния может быть именем унаследованого состояния.
|
|
Описание функции проверки экземпляра сообщения. Указанная функция будет использоваться для проверки корректности экземпляра сообщения.
|
|
Описание поля, являющегося одиночным объектом. Описывает поле-одиночный объект для SOP. Поле должно иметь один из типов: char, unsigned char, signed char, short, unsigned short, int, unsigned int, float, double, std::string, so_4::rt::comm_buf_t. Для описанного подобным образом поля можно установить значение при отправке сообщения средствами SOP.
|
|
Описание поля, являющегося вектором. Описывает поле-вектор для SOP. Поле должно иметь один из типов: char, unsigned char, signed char, short, unsigned short, int, unsigned int, float, double. Для описанного подобным образом поля можно установить значение при отправке сообщения средствами SOP.
|
|
Завершение описания сообщения. Этот макрос завершает описание сообщения, начатое макросом SOL4_MSG_START().
|
|
Начало описания сообщения. Описание сообщения завершается макросом SOL4_MSG_FINISH(). Описание сообщения может содержать описания полей (SOL4_MSG_FIELD(), SOL4_MSG_FIELD_ARRAY()) и функции проверки корректности экземпляра сообщения (SOL4_MSG_CHECKER()).
|
|
Событие, разрешенное к обработке в состоянии. Должен использоваться только внутри макросов SOL4_STATE_START(), SOL4_STATE_FINISH().
|
|
Изъятия из списка разрешенных событий указанного события.
|
|
Завершение описания состояния. Описание состояния должно быть начато макросом SOL4_STATE_START().
|
|
Указание того, что содержимое состояние должно быть слито с содержимым указанного состояния.
|
|
Описание обработчика входа в состояние. Может быть указано несколько обработчиков входа в состояние. Порядок, в котором обработчики будут вызываться при входе в состоянии не определен.
|
|
Описание обработчика выхода из состояния. Может быть указано несколько обработчиков выхода из состояния. Порядок, в котором обработчики будут вызываться при выходе из состояния не определен.
|
|
Начало описания состояния. Описание состояния завершается макросом SOL4_STATE_FINISH(). Описание состояния может содержать описания событий, разрешенных к обработке в данном состоянии (SOL4_STATE_EVENT()), и функций обработки входа и выхода в состояние. (SOL4_STATE_ON_ENTER(), SOL4_STATE_ON_EXIT()).
|
|
Завершение подписки события. Подписка события должна быть начата макросом SOL4_SUBSCR_EVENT_START. В своей реализации обращается к so_4::api::subscribe_event(). Код возврата subscribe_event игнорируется. Поэтому нет возможности определить, успешно ли выполнена подписка. Параметр subscr_flag функции subscribe_event устанавливается равным so_4::rt::evt_subscr_t::e_change_all. |
|
Завершение подписки события с печатью ошибок в cerr. Подписка события должна быть начата макросом SOL4_SUBSCR_EVENT_START. В своей реализации обращается к so_4::api::subscribe_event(). Если код возврата subscribe_event отличен от 0, то код возврата отображается в cerr. Параметр subscr_flag функции subscribe_event устанавливается равным so_4::rt::evt_subscr_t::e_change_all. |
|
Подписать событие на сообщение агента.
|
|
Подписать событие на собственное сообщение агента.
|
|
Начало подписки события.
Между макросами SOL4_SUBSCR_EVENT_START и SOL4_SUBSCR_EVENT_FINISH* могут использоваться макросы SOL4_SUBSCR_EVENT_MSG() и/или SOL4_SUBSCR_EVENT_MSG_SELF().
|
|
Указание имени базового класса. При указании имени базового класса не обязательно, чтобы указываемое C++ имя было известно в текущей области видимости.
|