|
@@ -116,7 +116,9 @@ ErrorCodeEnum FSMBase::Init(CEntityBase *pEntity)
|
|
|
if (Error == Error_Succeed) {
|
|
|
Trans(GetInitState());
|
|
|
}
|
|
|
-
|
|
|
+ else {
|
|
|
+ //m_iState = FSM_STATE_ERROR;
|
|
|
+ }
|
|
|
return Error;
|
|
|
}
|
|
|
|
|
@@ -183,7 +185,7 @@ void FSMBase::__ProcessEvent(FSMEvent *e)
|
|
|
if (old_state != new_state) {
|
|
|
OnHook(old_state, new_state); // dont change state here
|
|
|
TOOLKIT_ASSERT(m_iState == old_state);
|
|
|
- if (old_state != FSM_STATE_INIT) {
|
|
|
+ if (old_state != FSM_STATE_INIT && old_state != FSM_STATE_ERROR) {
|
|
|
OnStateExit(old_state);
|
|
|
}
|
|
|
m_iState = new_state;
|
|
@@ -217,7 +219,7 @@ void FSMBase::__ProcessEvent(FSMEvent *e)
|
|
|
if (m_lInTrans) {
|
|
|
e->IncRef();
|
|
|
ListEntry_AddTail(&m_eventlist, &e->m_entry);
|
|
|
- } else {
|
|
|
+ } else if(!InNotInitState()){
|
|
|
unsigned int rc = OnStateEvent(e);
|
|
|
if (!e->IsHandled()) {
|
|
|
if (FindStateEvent(e->iEvt)) {
|
|
@@ -234,6 +236,16 @@ void FSMBase::__ProcessEvent(FSMEvent *e)
|
|
|
}
|
|
|
e->SetHandled(FALSE);
|
|
|
}
|
|
|
+ else {
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Ignore the FSMEvent id: %d", e->iEvt);
|
|
|
+ if (e->IsHandled()) {
|
|
|
+ /** [Gifur@2025429]*/
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ e->OnUnhandled();
|
|
|
+ }
|
|
|
+ e->SetHandled(FALSE);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|