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

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

so_4::rt::a_sobjectizer_t so_4::rt::comm::a_cln_channel_base_t so_4::rt::comm::a_communicator_t so_4::rt::comm::a_srv_channel_base_t so_4::rt::comm::a_cln_channel_t so_4::rt::comm::a_raw_cln_channel_t so_4::rt::comm::a_raw_srv_channel_t so_4::rt::comm::a_srv_channel_t so_4::rt::comm::a_sockcln_t so_4::rt::comm::a_socksrv_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_tso_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)
 другого объекта.
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_tm_so_traits
 Свойства агента.
agent_coop_tm_so_coop
 Указатель определен только после регистрации агента.
auto_ptr_3::obj_ptr_t< impl::state_listener_storage_tm_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  Имя агента.


Методы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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  Нужно ли вызывать обработчики выхода/входа в состояние, если агент уже находится в этом состоянии. По умолчанию -- не нужно.

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

дерегистрации.

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

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

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

Этот метод вызывается у агента уже после того, как агент был вычеркнут из 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.

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

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

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

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

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

Самый первый метод, который вызывается у агента после его регистрации в 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_coop_t * so_4::rt::agent_t::so_query_coop  )  const
 

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

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

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

Имя агента.

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

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

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

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

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

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_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.

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

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

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

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, то сообщения об ошибках не игнорируются.

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, то сообщения об ошибках не игнорируются.

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, то сообщения об ошибках игнорируются.

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
 

другого объекта.

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


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

auto_ptr_3::obj_ptr_t< impl::state_listener_storage_t > so_4::rt::agent_t::m_so_state_listeners [private]
 

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

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

auto_ptr_3::obj_ptr_t< impl::agent_traits_storage_t > so_4::rt::agent_t::m_so_traits [private]
 

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

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


Документация по SObjectizer. Последние изменения: Thu Jan 12 10:52:51 2006. Создано системой  doxygen 1.4.6-NO
Hosted by uCoz