Здравствуйте, пффф, Вы писали:
П>Ладно, пролистал я доку по MSM — ну там основные сведения, то, сё, что такое FSM, состояния, события, переходы. Ну, фронтенды там разные, ок. Но вот как взять и просто запустить какой-нибудь пример — я что-то не понял. Есть ли в природе такое?
Как автор похожего фреймворка (код закрытый, сорри), имею мнение — MSM и иже с ними не есть правильный метод реализации КА на плюсах. Таблица переходов в явном виде коде — идея интересная, но ИМХО скорее чаще, чем нет, не самая удобная.
Чаще всего нам приходится иметь дело не с хрестоматийным КА, где переходы переключают логику (в автомат брошена монетка/автомат ждет монетки), а с асинхронным алгоритмом, где последовательно выполняются несколько асинхронных операций, и результат их выполнения определяет следующий шаг алгоритма.
Подход, реализованный в MSM, заставляет разбить асинхронный алгоритм на кучу несвязанных отдельных функций, при этом проверка результатов выполнения каждой асинхронной операции уезжает в таблицу переходов.
Для реализации конечных автоматов лучше использовать корутины. Причем,
duff device на стероидах из boost::asio подходит очень хорошо.