Шаблон класса so_4::rt::msg_auto_ptr_t< Msg >

Полный список членов класса


Подробное описание

template<class Msg>
class so_4::rt::msg_auto_ptr_t< Msg >

Вспомогательный класс для отправки сообщений.

Для отправки сообщений с информацией необходимо динамически создавать экземпляры сообщения:

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 );

Если отправка сообщения прошла неудачно, то экземпляр сообщения будет уничтожен автоматически.

Заметки:
уничтожение осуществляется сразу после неудачной попытке отправки сообщения (т.е. еще до возврата из send).
v.4.2.6
Если экземпляр отсылаемого сообщения полностью инициализируется в конструкторе, то для отсылки сообщения удобнее воспользоваться функциями so_4::api::send_msg_safely(). Подробнее см. so_4: Версия 4.2.6. Упрощение отсылки сообщений.

Открытые члены

 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_toperator= (const msg_auto_ptr_t &)
 Защита от копирования.

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

Msg * m_msg_data
 Экземпляр данных сообщения.

Методы

template<class Msg>
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]

Отослать сообщение.

Если отослать сообщение не удалось, то данные сообщения уничтожаются.

Возвращает:
код возврата функции so_4::rt::send_msg().
Аргументы:
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().

template<class Msg>
ret_code_t so_4::rt::msg_auto_ptr_t< Msg >::send ( const std::string &  agent,
const std::string &  msg 
) [inline]

Отослать сообщение.

Если отослать сообщение не удалось, то данные сообщения уничтожаются.

Возвращает:
код возврата функции so_4::rt::send_msg().

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

template<class 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,
const std::string &  receiver,
unsigned int  delay = 0,
unsigned int  period = 0 
) [inline]

Отослать сообщение в коммуникационный канал.

Если отослать сообщение не удалось, то данные сообщения уничтожаются.

Возвращает:
код возврата функции so_4::rt::send_msg().
Аргументы:
channel_to  Канал, в который нужно отослать сообщение.
agent  Агент-владелец отправляемого сообщения.
msg  Имя отправляемого сообщения.
receiver  Получатель сообщения. Пустая строка, если нет получателя.

Получатель должен существовать на другом конце коммуникационного канала.

delay  Задержка перед появлением сообщения (для отложенных или переодических сообщений).

Отсчет задержки начнется только после получения сообщения на другом конце канала.

period  Период повтора сообщения (для переодических сообщений).

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

template<class 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]

Отослать сообщение в коммуникационный канал.

Если отослать сообщение не удалось, то данные сообщения уничтожаются.

Возвращает:
код возврата функции so_4::rt::send_msg().
Аргументы:
channel_to  Канал, в который нужно отослать сообщение.
agent  Агент-владелец отправляемого сообщения.
msg  Имя отправляемого сообщения.

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

template<class Msg>
Msg* so_4::rt::msg_auto_ptr_t< Msg >::ptr (  )  [inline]

Указатель на данные отправляемого сообщения.

Возвращает:
значение, полученное в конструкторе до вызова send(). Нулевой указатель после вызова send().

Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.

template<class Msg>
const Msg* so_4::rt::msg_auto_ptr_t< Msg >::ptr (  )  const [inline]

Указатель на данные отправляемого сообщения.

Возвращает:
значение, полученное в конструкторе до вызова send(). Нулевой указатель после вызова send().

Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.

template<class Msg>
Msg* so_4::rt::msg_auto_ptr_t< Msg >::operator-> (  )  [inline]

Указатель на данные отправляемого сообщения.

Возвращает:
значение, полученное в конструкторе до вызова send(). Нулевой указатель после вызова send().

Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.

template<class Msg>
const Msg* so_4::rt::msg_auto_ptr_t< Msg >::operator-> (  )  const [inline]

Указатель на данные отправляемого сообщения.

Возвращает:
значение, полученное в конструкторе до вызова send(). Нулевой указатель после вызова send().

Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.

template<class Msg>
Msg& so_4::rt::msg_auto_ptr_t< Msg >::operator* (  )  [inline]

Ссылка данные отправляемого сообщения.

Внимание:
поведение после вызова send(), либо при получении в конструкторе нулевого указателя не определено.

Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.

template<class Msg>
const Msg& so_4::rt::msg_auto_ptr_t< Msg >::operator* (  )  const [inline]

Ссылка данные отправляемого сообщения.

Внимание:
поведение после вызова send(), либо при получении в конструкторе нулевого указателя не определено.

Перекрестные ссылки so_4::rt::msg_auto_ptr_t< Msg >::m_msg_data.


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