Класс so_4::rt::agent_t

Граф наследования:so_4::rt::agent_t:

so_4::rt::a_sobjectizer_t so_4::rt::comm::a_channel_processor_base_t so_4::rt::comm::a_communicator_t so_4::rt::comm::a_raw_incoming_channel_processor_t so_4::rt::comm::a_raw_outgoing_channel_t so_4::rt::comm::a_sop_incoming_channel_processor_t so_4::rt::comm::a_sop_outgoing_channel_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/qt_ring/main.cpp, sample/qt_ui/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_tso_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)
 Подписать insend-событие агента на сообщение другого объекта.
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)
 Добавить агенту удаляемого "слушателя" состояний.
dispatcher_binding_tso_dispatcher_binding () const
 Получить указатель на контекст диспетчера.
void so_set_dispatcher_binding (dispatcher_binding_t *binding)
 Назначение агенту указателя на контекст диспетчера.

Закрытые члены

void so_set_coop (agent_coop_t *coop)
 Установить кооперацию, к которой принадлежит агент.
void so_handle_deregistration ()
 Выполнить действия, необходимые агенту при дерегистрации.

Закрытые данные

std::string m_so_name
 Имя агента, назначеное агенту в конструкторе.
std::auto_ptr
< impl::agent_traits_storage_t
m_so_traits
 Свойства агента.
agent_coop_tm_so_coop
 Кооперация, которой принадлежит агент. Указатель определен только после регистрации агента.
dispatcher_binding_tm_so_dispatcher_binding
 Контекст, на котором будут исполняться события данного агента.
std::auto_ptr
< impl::state_listener_storage_t
m_so_state_listeners
 Слушатели состояния агента.

Друзья

class agent_coop_t

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

so_4::rt::agent_t::agent_t ( const char *  agent_name  ) 

Аргументы:
agent_name  Имя агента.

so_4::rt::agent_t::agent_t ( const std::string &  agent_name  )  [explicit]

Начиная с:
v.4.2.6
Аргументы:
agent_name  Имя агента.


Методы

const std::string & so_4::rt::agent_t::so_query_name (  )  const [virtual]

Имя агента.

В классе agent_t возвращается заданое в конструкторе имя.

Внимание:
должна возвращаться ссылка на один и тот же объект std::string в течении всей жизни агента.
Примеры:
sample/chstate/main.cpp.

Перекрестные ссылки m_so_name.

Используется в so_4::rt::impl::agent_coop_storage_t::add_agent(), so_4::rt::impl::std_sys_dict_t::check_agents_classes(), so_4::rt::impl::std_sys_dict_t::check_dereg_coop(), so_4::rt::impl::std_sys_dict_t::create_agents_wrappers(), so_4::disp::qt_ui::impl::traits_t::deinit(), so_4::disp::active_obj::impl::active_obj_traits_t::deinit(), so_4::disp::active_group::impl::traits_t::deinit(), so_4::rt::comm::a_channel_processor_base_t::evt_channel_created(), so_4::rt::comm::a_communicator_t::evt_channel_destroyed(), so_4::rt::comm::a_sop_outgoing_channel_t::evt_channel_failed(), so_4::rt::comm::a_raw_outgoing_channel_t::evt_channel_failed(), so_4::rt::a_sobjectizer_t::evt_check_dereg(), so_4::rt::comm::a_sop_outgoing_channel_t::evt_connect(), so_4::rt::comm::a_raw_outgoing_channel_t::evt_connect(), so_4::rt::comm::a_sop_outgoing_channel_t::evt_start(), so_4::rt::comm::a_sop_incoming_channel_processor_t::evt_start(), so_4::rt::comm::a_raw_outgoing_channel_t::evt_start(), so_4::rt::comm::a_raw_incoming_channel_processor_t::evt_start(), so_4::rt::a_sobjectizer_t::evt_start_normal_shutdown(), so_4::disp::qt_ui::impl::traits_t::init(), so_4::disp::active_obj::impl::active_obj_traits_t::init(), so_4::disp::active_group::impl::traits_t::init(), so_4::rt::comm::a_channel_processor_base_t::initiate_disconnection(), so_4::rt::comm::a_channel_processor_base_t::make_comm_channel(), so_4::rt::comm::a_sop_outgoing_channel_t::on_channel_acception(), so_4::rt::comm::a_raw_outgoing_channel_t::on_channel_acception(), so_4::rt::comm::a_raw_incoming_channel_processor_t::on_channel_acception(), so_4::rt::comm::a_sop_outgoing_channel_t::on_channel_destroying(), so_4::rt::comm::a_raw_outgoing_channel_t::on_channel_destroying(), so_4::rt::comm::a_raw_incoming_channel_processor_t::on_channel_destroying(), so_4::rt::comm::a_sop_incoming_channel_processor_t::on_enter_st_failed(), so_4::rt::comm::a_raw_incoming_channel_processor_t::on_enter_st_failed(), so_4::disp::qt_ui::impl::dispatcher_t::setup_dispatcher_binding(), so_4::disp::active_obj::impl::dispatcher_t::setup_dispatcher_binding(), so_4::disp::active_group::impl::dispatcher_t::setup_dispatcher_binding(), so_change_state(), so_4::rt::comm::a_sop_incoming_channel_processor_t::so_on_deregistration(), so_on_enter__send_so_msg_state(), so_4::rt::comm::a_communicator_t::so_on_subscription(), so_subscribe(), so_subscribe_insend_event() и so_4::rt::comm::a_channel_processor_base_t::warn_about_unknown_channel().

virtual const char* so_4::rt::agent_t::so_query_type (  )  const [pure virtual]

Имя типа агента.

Автоматически реализуется описанием класса агента посредством макросов SOL4_CLASS_START, SOL4_CLASS_FINISH.

Замещается в so_4::rt::comm::a_channel_processor_base_t, so_4::rt::comm::a_communicator_t, so_4::rt::comm::a_raw_incoming_channel_processor_t, so_4::rt::comm::a_raw_outgoing_channel_t, so_4::rt::comm::a_sop_incoming_channel_processor_t, so_4::rt::comm::a_sop_outgoing_channel_t и so_4::rt::a_sobjectizer_t.

Используется в so_4::rt::impl::std_sys_dict_t::check_agents_classes() и so_4::rt::impl::std_sys_dict_t::create_agents_wrappers().

virtual void so_4::rt::agent_t::so_on_subscription (  )  [pure virtual]

Подписка событий агента.

Самый первый метод, который вызывается у агента после его регистрации в SObjectizer.

Предназначен для подписки событий агента.

У всех агентов регистрируемой кооперации вызываются методы so_on_subscription. Только после этого рассылается сообщение msg_coop_registered.

Замещается в so_4::rt::comm::a_channel_processor_base_t, so_4::rt::comm::a_communicator_t, so_4::rt::comm::a_raw_incoming_channel_processor_t, so_4::rt::comm::a_raw_outgoing_channel_t, so_4::rt::comm::a_sop_incoming_channel_processor_t, so_4::rt::comm::a_sop_outgoing_channel_t и so_4::rt::a_sobjectizer_t.

void so_4::rt::agent_t::so_add_traits ( agent_traits_t traits  ) 

Добавить свойство, которое не уничтожается самим агентом.

Время жизни объекта traits должно превышать время жизни объекта-агента.

Аргументы:
traits  Объект-свойство агента. Указатель на этот объект сохраняется в объекте-агенте в течении всей жизни объекта-агента.
Примеры:
sample/raw_channel/tcp_cln.cpp.

Перекрестные ссылки m_so_traits.

void so_4::rt::agent_t::so_add_destroyable_traits ( agent_traits_t traits  ) 

Добавить свойство, которое уничтожается агентом в деструкторе.

Начиная с:
v.4.2.6
Данный объект будет уничтожен в деструкторе агента.
Аргументы:
traits  Объект-свойство агента. Указатель на этот объект сохраняется в объекте-агенте в течении всей жизни объекта-агента.

Должен быть указателем на динамически созданный объект.

Перекрестные ссылки m_so_traits.

const impl::agent_traits_storage_t & so_4::rt::agent_t::so_query_traits (  )  const

Получить хранилище свойств агента.

Начиная с:
v.4.2.6

Перекрестные ссылки m_so_traits.

Используется в so_4::rt::agent_coop_t::deregistered() и so_4::rt::agent_coop_t::init_traits().

agent_coop_t * so_4::rt::agent_t::so_query_coop (  )  const

Определить кооперацию, к которой принадлежит агент.

Заметки:
может возвращать 0, если агент не принадлежит ни одной кооперации (т.е. агент еще не зарегистрирован в системе).

Перекрестные ссылки m_so_coop.

ret_code_t so_4::rt::agent_t::so_change_state ( const std::string &  state_name,
bool  always_call_handlers = false 
)

Смена состояния агента.

Если агент действительно изменяет свое состояние, то на контексте текущей нити вызываются обработчики выхода и входа в состояние. Если же агент находится в данном состоянии, то обработчики вызываются, если параметр always_call_handlers содержит true. Обрабочики вызываются уже после того, как агент изменит свое состояние. Изменить состояние агента можно только на контексте той нити, на которой в данный момент работает обработчик события данного агента.

Возвращает:
0, если смена состояния прошла успешно.
Аргументы:
state_name  Имя нового состояния агента. Имя должно быть определено в описании класса агента.
always_call_handlers  Нужно ли вызывать обработчики выхода/входа в состояние, если агент уже находится в этом состоянии. По умолчанию -- не нужно.

Перекрестные ссылки m_so_state_listeners, so_4::api::query_agent_state() и so_query_name().

Используется в so_4::rt::comm::a_sop_outgoing_channel_t::evt_channel_failed(), so_4::rt::comm::a_raw_outgoing_channel_t::evt_channel_failed(), so_4::rt::comm::a_sop_outgoing_channel_t::evt_connect(), so_4::rt::comm::a_raw_outgoing_channel_t::evt_connect(), so_4::rt::comm::a_sop_outgoing_channel_t::evt_sop_client_handshake_resp(), so_4::rt::comm::a_sop_incoming_channel_processor_t::evt_start(), so_4::rt::comm::a_raw_incoming_channel_processor_t::evt_start(), so_4::rt::a_sobjectizer_t::evt_start_normal_shutdown(), so_4::rt::comm::a_sop_outgoing_channel_t::on_channel_acception(), so_4::rt::comm::a_raw_outgoing_channel_t::on_channel_acception(), so_4::rt::comm::a_sop_outgoing_channel_t::on_channel_destroying(), so_4::rt::comm::a_raw_outgoing_channel_t::on_channel_destroying(), so_4::rt::comm::a_sop_outgoing_channel_t::on_disconnection_initiated() и so_4::rt::comm::a_raw_outgoing_channel_t::on_disconnection_initiated().

void so_4::rt::agent_t::so_on_deregistration (  )  [virtual]

Обработать дерегистрацию агента.

Этот метод вызывается у агента уже после того, как агент был вычеркнут из SObjectizer и после того, как было разослано сообщение msg_coop_deregistered.

Данный метод для агента выполняет роль деструктора.

Переопределяется в so_4::rt::comm::a_channel_processor_base_t, so_4::rt::comm::a_communicator_t, so_4::rt::comm::a_raw_incoming_channel_processor_t и so_4::rt::comm::a_sop_incoming_channel_processor_t.

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

void so_4::rt::agent_t::so_on_enter__send_so_msg_state ( const std::string &  state_name  ) 

Внутренний метод SObjectizer.

Метод, который отсылает сообщение об изменении состояния агента. Предназначен для использования в качестве обработчика при входе в состояние.

Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::send() и so_query_name().

void so_4::rt::agent_t::so_subscribe ( const std::string &  event,
const std::string &  owner,
const std::string &  msg,
int  priority = 0,
std::ostream *  err = &std::cerr 
)

Подписать событие агента на сообщение другого объекта.

Начиная с:
v.4.2.6
Эквивалент:
Аргументы:
event  Имя подписываемого события.
owner  Имя агента-владельца инцидента.
msg  Имя сообщения-инцидента.
priority  Приоритет события.
err  Поток для отображения сообщений об ошибках подписки. Если равен 0, то сообщения об ошибках не игнорируются.

Перекрестные ссылки so_4::rt::evt_subscr_t::add(), so_4::rt::evt_subscr_t::e_change_all, so_query_name() и so_4::api::subscribe_event().

Используется в so_4::rt::def_subscr_hook_t::hook(), so_4::rt::comm::a_sop_outgoing_channel_t::so_on_subscription(), so_4::rt::comm::a_sop_incoming_channel_processor_t::so_on_subscription(), so_4::rt::comm::a_raw_outgoing_channel_t::so_on_subscription(), so_4::rt::comm::a_raw_incoming_channel_processor_t::so_on_subscription(), so_4::rt::comm::a_communicator_t::so_on_subscription(), so_4::rt::comm::a_channel_processor_base_t::so_on_subscription(), so_4::rt::a_sobjectizer_t::so_on_subscription() и so_subscribe().

void so_4::rt::agent_t::so_subscribe ( const std::string &  event,
const std::string &  msg,
int  priority = 0,
std::ostream *  err = &std::cerr 
)

Подписать событие агента на собственное сообщение.

Начиная с:
v.4.2.6
Эквивалент:
Аргументы:
event  Имя подписываемого события.
msg  Имя сообщения-инцидента.
priority  Приоритет события.
err  Поток для отображения сообщений об ошибках подписки. Если равен 0, то сообщения об ошибках не игнорируются.

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

void so_4::rt::agent_t::so_subscribe_insend_event ( const std::string &  event,
const std::string &  owner,
const std::string &  msg,
int  priority = 0,
std::ostream *  err = &std::cerr 
)

Подписать insend-событие агента на сообщение другого объекта.

Начиная с:
v.4.2.7
Аргументы:
event  Имя подписываемого события.
owner  Имя агента-владельца инцидента.
msg  Имя сообщения-инцидента.
priority  Приоритет события.
err  Поток для отображения сообщений об ошибках подписки. Если равен 0, то сообщения об ошибках игнорируются.

Перекрестные ссылки so_4::rt::evt_subscr_t::add(), so_4::rt::evt_subscr_t::e_change_all, so_4::rt::evt_subscr_t::insend_dispatching, so_query_name() и so_4::api::subscribe_event().

Используется в so_4::rt::def_subscr_hook_t::hook(), so_4::rt::comm::a_communicator_t::so_on_subscription(), so_4::rt::a_sobjectizer_t::so_on_subscription() и so_subscribe_insend_event().

void so_4::rt::agent_t::so_subscribe_insend_event ( const std::string &  event,
const std::string &  msg,
int  priority = 0,
std::ostream *  err = &std::cerr 
)

Подписать insend-событие агента на собственное сообщение.

Начиная с:
v.4.2.7
Аргументы:
event  Имя подписываемого события.
msg  Имя сообщения-инцидента.
priority  Приоритет события.
err  Поток для отображения сообщений об ошибках подписки. Если равен 0, то сообщения об ошибках игнорируются.

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

void so_4::rt::agent_t::so_add_nondestroyable_listener ( agent_state_listener_t l  ) 

Добавить агенту не удаляемого "слушателя" состояний.

Начиная с:
v.4.2.6.1
Время жизни этого слушателя не будет контролироваться агентом.
Аргументы:
l  Добавляемый слушатель.

Перекрестные ссылки m_so_state_listeners и so_4::rt::agent_state_listener_t::stored().

void so_4::rt::agent_t::so_add_destroyable_listener ( agent_state_listener_t l  ) 

Добавить агенту удаляемого "слушателя" состояний.

Начиная с:
v.4.2.6.1
Время жизни этого слушателя будет контролироваться агентом. Слушатель будет уничтожен либо при дерегистрации агента, либо, если агент не был зарегистрирован, в деструкторе агента.
Аргументы:
l  Добавляемый слушатель. Должен быть указателем на динамически созданный объект.

Перекрестные ссылки m_so_state_listeners и so_4::rt::agent_state_listener_t::stored().

dispatcher_binding_t * so_4::rt::agent_t::so_dispatcher_binding (  )  const

Получить указатель на контекст диспетчера.

Начиная с:
v.4.4.0-b6
Внимание:
Корректное значение будет возвращаться только когда агент зарегистрирован в SObjectizer-е.

Перекрестные ссылки m_so_dispatcher_binding.

void so_4::rt::agent_t::so_set_dispatcher_binding ( dispatcher_binding_t binding  ) 

void so_4::rt::agent_t::so_set_coop ( agent_coop_t coop  )  [private]

Установить кооперацию, к которой принадлежит агент.

Метод предназначен для класса so_4::rt::agent_coop_t. Когда агент добавляется в кооперации параметр coop содержит указатель на кооперацию. Когда кооперация дерегистрируется, coop содержит 0.

Перекрестные ссылки m_so_coop.

Используется в so_4::rt::agent_coop_t::agent_coop_t() и so_4::rt::agent_coop_t::deregistered().

void so_4::rt::agent_t::so_handle_deregistration (  )  [private]

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

Начиная с:
v.4.2.6.1
Вызывает метод so_on_deregistration, после чего очищает список "слушателей" состояний агентов.

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

Используется в so_4::rt::agent_coop_t::deregistered().


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

Свойства агента.

Начиная с:
v.4.2.6

Используется в so_add_destroyable_traits(), so_add_traits() и so_query_traits().

Контекст, на котором будут исполняться события данного агента.

Начиная с:
v.4.4.0-b6 Данный указатель определен только после регистрации агента.

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

Слушатели состояния агента.

Начиная с:
v.4.2.6.1

Используется в so_add_destroyable_listener(), so_add_nondestroyable_listener(), so_change_state() и so_handle_deregistration().


Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой  doxygen1.5.6 Intervale SourceForge.net Logo