Здравствуйте, rg45, Вы писали:
R>Офигенная машина состояний. Паровоз Черепановых нервно пыхтит в коридоре
Да. Стоит немного усложнить:
#include <generator>
#include <iostream>
#include <string>
std::generator<std::string> runMachine(int& param) {
co_yield "Idle";
co_yield "Started";
co_yield "Processing";
while (param < 10)
{
co_yield "Waiting";
}
co_yield "Stopped";
}
int main() {
int iValue = 0;
for (const std::string& state : runMachine(iValue))
{
++iValue;
std::cout << "State: " << state << std::endl;
}
}
Вот так спагетти колбеков можно спокойно завернуть в корутину.
Вместо int& param вверху передается некий ServerInterface и вперед.