Граф наследования:so_4::rt::agent_t:
Либой агент в SObjectizer-е должен быть производным от agent_t. При этом agent_t должен быть доступным базовым классом для класса агента.
В конструкторе agent_t задается имя агента, которое не может быть изменено впоследствии.
sample/chstate/main.cpp, sample/destroyable_traits/main.cpp, sample/dyn_coop_controlled/main.cpp, sample/dyn_reg/main.cpp, sample/filter/c1.cpp, sample/filter/c1i.hpp, sample/filter/c2.cpp, sample/filter/c2i.hpp, sample/filter/server.cpp, sample/hello_all/main.cpp, sample/hello_delay/main.cpp, sample/hello_periodic/main.cpp, sample/hello_world/main.cpp, sample/high_traffic/client.cpp, sample/high_traffic/common.cpp, sample/high_traffic/server.cpp, sample/inheritance/main.cpp, sample/parent_insend/main.cpp, sample/raw_channel/tcp_cln.cpp, sample/raw_channel/tcp_srv.cpp и sample/subscr_hook/main.cpp.
Открытые члены | |
agent_t (const char *agent_name) | |
agent_t (const std::string &agent_name) | |
virtual const std::string & | so_query_name () const |
Имя агента. | |
virtual const char * | so_query_type () const =0 |
Имя типа агента. | |
virtual void | so_on_subscription ()=0 |
Подписка событий агента. | |
void | so_add_traits (agent_traits_t &traits) |
Добавить свойство, которое не уничтожается самим агентом. | |
void | so_add_destroyable_traits (agent_traits_t *traits) |
Добавить свойство, которое уничтожается агентом в деструкторе. | |
const impl::agent_traits_storage_t & | so_query_traits () const |
Получить хранилище свойств агента. | |
agent_coop_t * | so_query_coop () const |
Определить кооперацию, к которой принадлежит агент. | |
ret_code_t | so_change_state (const std::string &state_name, bool always_call_handlers=false) |
Смена состояния агента. | |
virtual void | so_on_deregistration () |
Обработать дерегистрацию агента. | |
void | so_on_enter__send_so_msg_state (const std::string &state_name) |
Внутренний метод SObjectizer. | |
void | so_subscribe (const std::string &event, const std::string &owner, const std::string &msg, int priority=0, std::ostream *err=&std::cerr) |
другого объекта. | |
void | so_subscribe (const std::string &event, const std::string &msg, int priority=0, std::ostream *err=&std::cerr) |
Подписать событие агента на собственное сообщение. | |
void | so_subscribe_insend_event (const std::string &event, const std::string &owner, const std::string &msg, int priority=0, std::ostream *err=&std::cerr) |
другого объекта. | |
void | so_subscribe_insend_event (const std::string &event, const std::string &msg, int priority=0, std::ostream *err=&std::cerr) |
Подписать insend-событие агента на собственное сообщение. | |
void | so_add_nondestroyable_listener (agent_state_listener_t &l) |
Добавить агенту не удаляемого "слушателя" состояний. | |
void | so_add_destroyable_listener (agent_state_listener_t *l) |
Добавить агенту удаляемого "слушателя" состояний. | |
Закрытые члены | |
void | so_set_coop (agent_coop_t *coop) |
Установить кооперацию, к которой принадлежит агент. | |
void | so_handle_deregistration () |
дерегистрации. | |
Закрытые данные | |
std::string | m_so_name |
Имя агента, назначеное агенту в конструкторе. | |
auto_ptr_3::obj_ptr_t< impl::agent_traits_storage_t > | m_so_traits |
Свойства агента. | |
agent_coop_t * | m_so_coop |
Указатель определен только после регистрации агента. | |
auto_ptr_3::obj_ptr_t< impl::state_listener_storage_t > | m_so_state_listeners |
Слушатели состояния агента. | |
Друзья | |
class | agent_coop_t |
|
|
|
|
|
Добавить агенту удаляемого "слушателя" состояний.
|
|
Добавить свойство, которое уничтожается агентом в деструкторе.
|
|
Добавить агенту не удаляемого "слушателя" состояний.
|
|
Добавить свойство, которое не уничтожается самим агентом. Время жизни объекта traits должно превышать время жизни объекта-агента.
|
|
Смена состояния агента. Если агент действительно изменяет свое состояние, то на контексте текущей нити вызываются обработчики выхода и входа в состояние. Если же агент находится в данном состоянии, то обработчики вызываются, если параметр always_call_handlers содержит true. Обрабочики вызываются уже после того, как агент изменит свое состояние. Изменить состояние агента можно только на контексте той нити, на которой в данный момент работает обработчик события данного агента.
|
|
дерегистрации.
|
|
Обработать дерегистрацию агента. Этот метод вызывается у агента уже после того, как агент был вычеркнут из SObjectizer и после того, как было разослано сообщение msg_coop_deregistered. Данный метод для агента выполняет роль деструктора. Переопределяется в so_4::rt::comm::a_cln_channel_base_t, so_4::rt::comm::a_communicator_t, so_4::rt::comm::a_srv_channel_t и so_4::rt::comm::a_srv_channel_base_t. |
|
Внутренний метод SObjectizer. Метод, который отсылает сообщение об изменении состояния агента. Предназначен для использования в качестве обработчика при входе в состояние. |
|
Подписка событий агента. Самый первый метод, который вызывается у агента после его регистрации в SObjectizer. Предназначен для подписки событий агента. У всех агентов регистрируемой кооперации вызываются методы so_on_subscription. Только после этого рассылается сообщение msg_coop_registered. Замещается в so_4::rt::comm::a_cln_channel_t, so_4::rt::comm::a_cln_channel_base_t, so_4::rt::comm::a_communicator_t, so_4::rt::comm::a_raw_cln_channel_t, so_4::rt::comm::a_raw_srv_channel_t, so_4::rt::comm::a_sockcln_t, so_4::rt::comm::a_socksrv_t, so_4::rt::comm::a_srv_channel_t, so_4::rt::comm::a_srv_channel_base_t и so_4::rt::a_sobjectizer_t. |
|
Определить кооперацию, к которой принадлежит агент.
|
|
Имя агента. В классе agent_t возвращается заданое в конструкторе имя.
|
|
Получить хранилище свойств агента.
|
|
Имя типа агента. Автоматически реализуется описанием класса агента посредством макросов SOL4_CLASS_START, SOL4_CLASS_FINISH. Замещается в so_4::rt::comm::a_cln_channel_t, so_4::rt::comm::a_cln_channel_base_t, so_4::rt::comm::a_communicator_t, so_4::rt::comm::a_raw_cln_channel_t, so_4::rt::comm::a_raw_srv_channel_t, so_4::rt::comm::a_sockcln_t, so_4::rt::comm::a_socksrv_t, so_4::rt::comm::a_srv_channel_t, so_4::rt::comm::a_srv_channel_base_t и so_4::rt::a_sobjectizer_t. |
|
Установить кооперацию, к которой принадлежит агент. Метод предназначен для класса so_4::rt::agent_coop_t. Когда агент добавляется в кооперации параметр coop содержит указатель на кооперацию. Когда кооперация дерегистрируется, coop содержит 0. |
|
Подписать событие агента на собственное сообщение.
SOL4_SUBSCR_EVENT_START( event, priority ) SOL4_SUBSCR_EVENT_MSG_SELF( owner, msg ) SOL4_SUBSCR_EVENT_FINISH_CERR()
|
|
другого объекта.
SOL4_SUBSCR_EVENT_START( event, priority ) SOL4_SUBSCR_EVENT_MSG( owner, msg ) SOL4_SUBSCR_EVENT_FINISH_CERR()
|
|
Подписать insend-событие агента на собственное сообщение.
|
|
другого объекта.
|
|
Слушатели состояния агента.
|
|
Свойства агента.
|