Для отправки сообщений с информацией необходимо динамически создавать экземпляры сообщения:
some_msg * p = new some_msg();
Далее, указатель на экземпляр передается в функцию so_4::api::send_msg:
so_4::api::send_msg( some_agent_name, some_msg_name, p );
Если сообщение доставлено нормально, то экземпляр сообщения будет уничтожен автоматически. В противном случае за уничтожение экземпляра сообщения должен отвечать отправитель сообщения:
some_msg * p = new some_msg(); if( so_4::api::send_msg( agent_name, msg_name, p ) ) { // Сообщение не было отправлено! delete p; }
Для того, чтобы не контролировать каждый вызов send_msg предназначен шаблонный класс msg_auto_ptr_t:
so_4::rt::msg_auto_ptr_t< some_msg > p( new some_msg() ); p.send( agent_name, msg_name );
Если отправка сообщения прошла неудачно, то экземпляр сообщения будет уничтожен автоматически.
Открытые члены | |
msg_auto_ptr_t (Msg *msg_data=0) | |
ret_code_t | send (const std::string &agent, const std::string &msg, const std::string &receiver, unsigned int delay=0, unsigned int period=0) |
Отослать сообщение. | |
ret_code_t | send (const std::string &agent, const std::string &msg) |
Отослать сообщение. | |
ret_code_t | send (const comm_channel_t &channel_to, const std::string &agent, const std::string &msg, const std::string &receiver, unsigned int delay=0, unsigned int period=0) |
Отослать сообщение в коммуникационный канал. | |
ret_code_t | send (const comm_channel_t &channel_to, const std::string &agent, const std::string &msg) |
Отослать сообщение в коммуникационный канал. | |
Msg * | ptr () |
Указатель на данные отправляемого сообщения. | |
const Msg * | ptr () const |
Указатель на данные отправляемого сообщения. | |
Msg * | operator-> () |
Указатель на данные отправляемого сообщения. | |
const Msg * | operator-> () const |
Указатель на данные отправляемого сообщения. | |
Msg & | operator* () |
Ссылка данные отправляемого сообщения. | |
const Msg & | operator* () const |
Ссылка данные отправляемого сообщения. | |
Закрытые члены | |
msg_auto_ptr_t (const msg_auto_ptr_t &) | |
Защита от копирования. | |
msg_auto_ptr_t & | operator= (const msg_auto_ptr_t &) |
Защита от копирования. | |
Закрытые данные | |
Msg * | m_msg_data |
Экземпляр данных сообщения. |
ret_code_t so_4::rt::msg_auto_ptr_t< Msg >::send | ( | const std::string & | agent, | |
const std::string & | msg, | |||
const std::string & | receiver, | |||
unsigned int | delay = 0 , |
|||
unsigned int | period = 0 | |||
) | [inline] |
Отослать сообщение.
Если отослать сообщение не удалось, то данные сообщения уничтожаются.
agent | Агент-владелец отправляемого сообщения. |
msg | Имя отправляемого сообщения. |
receiver | Получатель сообщения. Пустая строка, если нет получателя. |
delay | Задержка перед появлением сообщения (для отложенных или переодических сообщений). |
period | Период повтора сообщения (для переодических сообщений). |
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data и so_4::api::send_msg().
Используется в so_4::rt::comm::channel_closer(), so_4::api::make_global_agent(), so_4::rt::comm::impl::parse_sop_incoming_buffer(), so_4::rt::msg_auto_ptr_t< Msg >::send() и so_4::rt::agent_t::so_on_enter__send_so_msg_state().
ret_code_t so_4::rt::msg_auto_ptr_t< Msg >::send | ( | const std::string & | agent, | |
const std::string & | msg | |||
) | [inline] |
Отослать сообщение.
Если отослать сообщение не удалось, то данные сообщения уничтожаются.
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::send().
ret_code_t so_4::rt::msg_auto_ptr_t< Msg >::send | ( | const comm_channel_t & | channel_to, | |
const std::string & | agent, | |||
const std::string & | msg, | |||
const std::string & | receiver, | |||
unsigned int | delay = 0 , |
|||
unsigned int | period = 0 | |||
) | [inline] |
Отослать сообщение в коммуникационный канал.
Если отослать сообщение не удалось, то данные сообщения уничтожаются.
channel_to | Канал, в который нужно отослать сообщение. |
agent | Агент-владелец отправляемого сообщения. |
msg | Имя отправляемого сообщения. |
receiver |
Получатель сообщения. Пустая строка, если нет получателя. Получатель должен существовать на другом конце коммуникационного канала. |
delay |
Задержка перед появлением сообщения (для отложенных или переодических сообщений). Отсчет задержки начнется только после получения сообщения на другом конце канала. |
period | Период повтора сообщения (для переодических сообщений). |
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data и so_4::api::send_msg().
ret_code_t so_4::rt::msg_auto_ptr_t< Msg >::send | ( | const comm_channel_t & | channel_to, | |
const std::string & | agent, | |||
const std::string & | msg | |||
) | [inline] |
Отослать сообщение в коммуникационный канал.
Если отослать сообщение не удалось, то данные сообщения уничтожаются.
channel_to | Канал, в который нужно отослать сообщение. |
agent | Агент-владелец отправляемого сообщения. |
msg | Имя отправляемого сообщения. |
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::send().
Msg* so_4::rt::msg_auto_ptr_t< Msg >::ptr | ( | ) | [inline] |
Указатель на данные отправляемого сообщения.
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.
const Msg* so_4::rt::msg_auto_ptr_t< Msg >::ptr | ( | ) | const [inline] |
Указатель на данные отправляемого сообщения.
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.
Msg* so_4::rt::msg_auto_ptr_t< Msg >::operator-> | ( | ) | [inline] |
Указатель на данные отправляемого сообщения.
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.
const Msg* so_4::rt::msg_auto_ptr_t< Msg >::operator-> | ( | ) | const [inline] |
Указатель на данные отправляемого сообщения.
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.
Msg& so_4::rt::msg_auto_ptr_t< Msg >::operator* | ( | ) | [inline] |
Ссылка данные отправляемого сообщения.
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.
const Msg& so_4::rt::msg_auto_ptr_t< Msg >::operator* | ( | ) | const [inline] |
Ссылка данные отправляемого сообщения.
Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:49 2008. Создано системой 1.5.6 |