Класс so_4::rt::msg_data_t

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


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

Описатель экземпляра сообщения.

Этот класс предназначен для предоставления диспетчерам информации об отложенных сообщениях.

Подсчет ссылок на msg_data_impl
До версии 4.4.0-b6 все конструкторы и операторы присваивания класса msg_data_t манипулировали счетчиком ссылок на подчиненный объект msg_data_impl. Что выливалось в лишний инкремент/декремент (экземпляр msg_data_t, созданный в send_msg()), если сообщение не являлось периодическим или отложенным.

В версии 4.4.0-b6 подход к подсчету ссылок изменен. Теперь конструктор и оператор присваивания, которые получают msg_data_impl_t* не увеличивают ссылок в конструкторе. Такие экземпляры msg_data_t обрабатываются специальным образом (они создаются в send_msg() и при обработке полученных через SOP сообщений) -- для определения необходимости уничтожения подчиненного msg_data_impl для них вызывается метод try_destroy_msg_data().

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

 msg_data_t ()
 Конструктор по умолчанию.
 msg_data_t (so_4::rt::impl::msg_data_impl_t *msg)
 Конструктор, используемый SObjectizer-ом.
 msg_data_t (const msg_data_t &o)
 Конструктор копирования.
msg_data_toperator= (const msg_data_t &o)
 Оператор копирования.
msg_data_toperator= (so_4::rt::impl::msg_data_impl_t *o)
 Оператор копирования, используемый SObjectizer-ом.
const std::string & agent () const
 Имя агента-владельца сообщения.
const std::string & msg () const
 Имя сообщения.
so_4::rt::impl::msg_data_impl_tquery_impl () const
 Часть реализации SObjectizer-a.
void send () const
 Выполнить доставку сообщения.
void try_destroy_msg_data (unsigned int external_references)
 Попытка удаления msg_data_impl с учетом существования указанного числа внешних ссылок на объект.

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

so_4::rt::impl::msg_data_impl_tm_msg
 Часть реализации SObjectizer-а.
bool m_use_refcounter


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

so_4::rt::msg_data_t::msg_data_t (  ) 

Конструктор по умолчанию.

Конструирует объект, который не содержит действительной информации. Предназначен для того, чтобы объекты msg_data_t можно было хранить в STL-контейнерах.

so_4::rt::msg_data_t::msg_data_t ( so_4::rt::impl::msg_data_impl_t msg  )  [explicit]

Конструктор, используемый SObjectizer-ом.

Данный конструктор указывает объекту, что он не должен использовать счетчик ссылок для msg_data_impl.

Аргументы:
msg  Реальное описание экземпляра сообщения

so_4::rt::msg_data_t::msg_data_t ( const msg_data_t o  ) 

Конструктор копирования.

Задействует счетчик ссылок для msg_data_impl.

Перекрестные ссылки so_4::rt::impl::msg_data_impl_t::inc_ref_count() и m_msg.


Методы

msg_data_t & so_4::rt::msg_data_t::operator= ( so_4::rt::impl::msg_data_impl_t o  ) 

Оператор копирования, используемый SObjectizer-ом.

Данный оператор указывает объекту, что он не должен использовать счетчик ссылок для msg_data_impl.

Перекрестные ссылки so_4::rt::impl::msg_data_impl_t::dec_ref_count(), m_msg и m_use_refcounter.

so_4::rt::impl::msg_data_impl_t * so_4::rt::msg_data_t::query_impl (  )  const

Часть реализации SObjectizer-a.

Возвращает:
реальное описание экземпляра сообщения.

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

Используется в so_4::api::deliver_msg_helper::deliver_and_dispatch() и so_4::api::deliver_msg_helper::generate_demands_on_blocked_kernel().

void so_4::rt::msg_data_t::send (  )  const

Выполнить доставку сообщения.

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

Заметки:
Запрещает запуск insend-событий на контексте текущей нити.

Перекрестные ссылки so_4::api::deliver_msg_on_nonblocked_kernel() и so_4::api::insend_dispatching_disabled.

Используется в so_4::timer_thread::ace_timer_queue_adapter::impl::timer_event_handler_t::handle_timeout().

void so_4::rt::msg_data_t::try_destroy_msg_data ( unsigned int  external_references  ) 

Попытка удаления msg_data_impl с учетом существования указанного числа внешних ссылок на объект.

Начиная с:
v.4.4.0-b6 Если external_references == 0, то объект msg_data_impl уничтожается.
Заметки:
Ничего не делает, если m_use_refcounter == true.

Перекрестные ссылки m_msg и m_use_refcounter.

Используется в so_4::api::send_delayed_or_periodic_msg() и so_4::api::send_non_delayed_non_periodic_msg().


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

Часть реализации SObjectizer-а.

Реальное описание экземпляра сообщения.

Используется в agent(), msg(), msg_data_t(), operator=(), query_impl() и try_destroy_msg_data().

Начиная с:
v.4.4.0-b6
Признак того, что объект должен использовать счетчика ссылок для контроля времени жизни msg_data_impl.

Используется в operator=() и try_destroy_msg_data().


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