SObjectizer-5.5.22 и so_5_extra-1.1.0

2018.04.14

SObjectizer обновлен до версии 5.5.22, а so_5_extra до версии 1.1.0.

В SObjectizer-5.5.22 вошли следующие изменения/дополнения:

1. Добавлена возможность фильтрации сообщений при работе механизма message_delivery_tracing. Теперь пользователь может может выбраковывать те сообщения, которые ему не интересны. Например, это позволяет отследить сообщения только определенного типа. Или сообщения, которые отсылаются на конкретный mbox. Или сообщения, которые доставляются определенному агенту. Подробности в Wiki проекта: [so-5.5.22 Message Delivery Tracer Filters].

В состав штатных примеров SObjectizer добавлены новые примеры selective_msg_tracing и nohandler_msg_tracing, демонстрирующие новую функциональность.

Примечание. Данная функциональность вносит ломающие совместимость изменения, поэтому при переходе на SO-5.5.22 может потребоваться модификация кода ваших приложений, если вы используете создание кастомых mbox-ов (см. [so-5.5.19 Custom mbox Creation Procedure]) В частности, so_5_extra версий 1.0.* не смогут работать с SO-5.5.22. Совместно с SO-5.5.22 следует использовать so_5_extra-1.1.0.

2. Теперь свободные функции могут использоваться как обработчики сообщений при вызове so_5::receive и so_5::select. Например:

void first_handler(const some_msg & msg) {...}
void second_handler(another_msg msg) {...}
void third_handler(so_5::mhood_t<third_msg> cmd) {...}
void forth_handler(so_5::mutable_mhood_t<third_msg> cmd) {...}
...
auto ch = so_5::create_mchain(env);
so_5::receive(ch, so_5::infinite_wait,
    first_handler,
    second_handler,
    third_handler,
    forth_handler);
					 

3. Изменено поведение метода agent_t::so_current_state() во время смены состояния агента. Ранее этот метод возвращал ссылку на старое состояние агента, что делало ее бесполезной внутри on_enter/on_exit обработчиков для состояний. Сейчас so_current_state() возвращает ссылку на то состояние, для которого в данный момент запущен on_enter или on_exit обработчик.

Проект so_5_extra переведен на asio-1.12.0 и SO-5.5.22. Новая функциональность в версию 1.1.0 не добавлялась.

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

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