std::shared_ptr<FiniteStateMachine> WidgetScheduleNodeImpl::MakeFiniteStateMachine()
{
auto builder = FiniteStateMachine::Builder::New(GetDescription(), S_WIDGET_INIT);
if (builder == nullptr) {
return nullptr;
}
builder->MakeTransition(S_WIDGET_INIT, E_START_WIDGET, S_WIDGET_WAITING,
[this](FiniteStateMachine &machine, uint32_t event) { OnStartSchedule(machine, event); });
builder->MakeTransition(S_WIDGET_WAITING, E_START_AUTH, S_WIDGET_AUTH_RUNNING,
[this](FiniteStateMachine &machine, uint32_t event) { OnStartAuth(machine, event); });
builder->MakeTransition(S_WIDGET_WAITING, E_CANCEL_AUTH, S_WIDGET_AUTH_FINISHED,
[this](FiniteStateMachine &machine, uint32_t event) { OnStopSchedule(machine, event); });
builder->MakeTransition(S_WIDGET_WAITING, E_NAVI_PIN_AUTH, S_WIDGET_AUTH_FINISHED,
[this](FiniteStateMachine &machine, uint32_t event) { OnNaviPinAuth(machine, event); });
builder->MakeTransition(S_WIDGET_AUTH_RUNNING, E_COMPLETE_AUTH, S_WIDGET_AUTH_FINISHED,
[this](FiniteStateMachine &machine, uint32_t event) { OnSuccessAuth(machine, event); });
builder->MakeTransition(S_WIDGET_AUTH_RUNNING, E_CANCEL_AUTH, S_WIDGET_AUTH_FINISHED,
[this](FiniteStateMachine &machine, uint32_t event) { OnStopSchedule(machine, event); });
builder->MakeTransition(S_WIDGET_AUTH_RUNNING, E_NAVI_PIN_AUTH, S_WIDGET_AUTH_FINISHED,
[this](FiniteStateMachine &machine, uint32_t event) { OnNaviPinAuth(machine, event); });
builder->MakeTransition(S_WIDGET_AUTH_RUNNING, E_START_AUTH, S_WIDGET_AUTH_RUNNING,
[this](FiniteStateMachine &machine, uint32_t event) { OnStartAuth(machine, event); });
builder->MakeTransition(S_WIDGET_AUTH_RUNNING, E_UPDATE_AUTH, S_WIDGET_AUTH_RUNNING,
[this](FiniteStateMachine &machine, uint32_t event) { OnStopAuthList(machine, event); });
return builder->Build();
}代码解析
最新发布