Во-первых, сильно изменился (в лучшую сторону) класс
ma::handler_storage
. Теперь он поддерживает функциональные объекты с operator()(void)
при специализации ma::handler_storage<void>
. Кроме того, наконец-то, метод
ma::handler_storage::target()
стал типизированным, что избавляет его пользователей (см. проект nmea_client) от неприятных reinterpret_cast
. По умолчанию ma::handler_storage::target()
возвращает void*
, но теперь, при желании, этот тип можно специфицировать указав его в качестве второго шаблонного аргумента ma::handler_storage
. При такой специализации для класса
ma::handler_storage_service
должно быть доступно преобразование static_cast<Target*>(Handler*)
, где Target
- специфицированный дляma::handler_storage::target()
тип (т.е.Target* ma::handler_storage<Arg, Target>::target()
).Handler
- тип функционального объекта, хранимого вma::handler_storage
.
Второе крупное нововведение заключается в поддержке проектами qt_echo_server, echo_server, async_connect и asio_performance_test_client режима io_service-per-work-thread (по аналогии с HTTP Server 2 из примеров Asio). Для CLI за этот режим отвечает параметр demux_per_work_thread. Для Windows режим io_service-per-work-thread по умолчанию отлючен (
--demux_per_work_thread=0, false, off
). Для других платформ - по умолчанию включен (--demux_per_work_thread=1, true, on
).Остальные детали беты 0.5.0 можно прочитать в списке рассылки.
Updated
Исправление ошибок и расширение поддержки лямбд вылилось в asio samples 0.5.1.