SObjectizer-5.5.23 и so_5_extra-1.2.0

2018.11.07

SObjectizer обновлен до версии 5.5.23, а so_5_extra до версии 1.2.0.

SObjectizer-5.5.23 не содержит большого количества изменений, но является основой для ряда интересных нововведений so_5_extra-1.2.0. Например, enveloped messages (подробнее можно почитать в Wiki проекта: [so-5.5 In-depth - Enveloped Messages]). Данная функциональность позволяет обернуть сообщение в специальный конверт. Этот конверт может содержать дополнительную информацию о сообщении и может выполнять дополнительные действия при доставке сообщения.

Полный список изменений SObjectizer-5.5.23 можно найти здесь: [so-5.5.23 Version Info]

Внимание. Расширен интерфейс so_5::abstract_message_box_t, в результате чего, если вы реализовали свой собственный mbox, то вы должны реализовать метод do_deliver_enveloped_msg в своем mbox-е.

Проект so_5_extra получил несколько дополнений в версии 1.2.0.

Добавлен класс so_5::extra::mboxes::proxy::simple_t, упрощающий создание пользовательских mbox-ов. Подробнее в Wiki проекта: [so5extra 1.2 Proxy Mbox].

Добавлено пространство имен so_5::extra::revocable_msg с функциональностью для отправки отзывных сообщений. Например:

auto id = so_5::extra::revocable_msg::send(mbox, ...);
... // Какие-то другие действия.
if(some_condition())
   // Сообщение должно быть отозвано.
   id.revoke(); // Если сообщение еще не доставлено, оно будет отозвано.

Подробности в Wiki проекта:[so5extra 1.2 Revocable Messages].

Добавлено пространство имен so_5::extra::revocable_timer с функциональностью, позволяющей гарантированно отзывать отложенные/периодические сообщения. Данная функциональность имитирует функции send_delayed/send_periodic/timer_id SObjectizer-а, но отмена сообщения происходит даже если оно уже в очереди получателя. Например:

auto id = so_5::extra::revocable_timer::send_periodic(env, mbox, 1s, 2s, ...);
... // Какие-то другие действия.
if(some_condition())
   // Периодическое сообщение должно быть отменено.
   id.release();

Подробности в Wiki проекта:[so5extra 1.2 Revocable Timers].

Добавлено пространство имен so_5::extra::enveloped_msg с функциональностью, основанной на базе enveloped messages. В примере ниже представлен конверт, контролирующий время доставки для сообщения:

// Сообщение типаcheck_user должно быть доставлено в течении 10c. В противном случае оно должно быть отменено.
// Создается экземпляр сообщения...
so_5::extra::enveloped_msg::make(...)
   // ...теперь обернем его специальным конвертом...
   .envelope(10s)
   // ...и отправляем конверт с нашим сообщением внутри.
   .send_to(target_mbox);

Подробности в Wiki проекта: [so5extra 1.2 Just Envelope], [so5extra 1.2 Sending of Envelopes] и [so5extra 1.2 Time-Limited Message Delivery].

SObjectizer v.5.5.23 может быть загружен из секции Files или может быть взят из Subversion-репозитория или из зеркала на GitHub.

Исходные тексты so_5_extra могут быть получены из Subversion-репозитория или могут быть загружены из секции Files.