이벤트 디스패치

dispatchEvent() 오퍼레이션은 switch 문을 사용하여 오브젝트 상태에서 아웃바운드 상태 전이를 처리할 수 있습니다.

이 태스크 정보

예를 들어, HomeHeatingSystem 샘플에서 Furnace의 운영 상태에 대해 생성된 dispatchEvent() 오퍼레이션은 개략적으로 다음 switch 문을 사용하여 운영 직교 상태의 유휴, 종료 중, 작업 중 및 시작 중 하위 상태에서 나가는 상태 전이를 처리합니다.

static int operating_dispatchEvent(Furnace* const me,
short id) {
   int res = eventNotConsumed;
   switch (me->operating_active) {
      case Furnace_idle:
      {
         /* process out transitions from idle state */
         res = eventConsumed;
         break;
      };

      case Furnace_shutting:
      {
         /* process out transitions from shutting
            state */
         res = eventConsumed;
         break;
      };
      case Furnace_starting:
      {
         /* process out transitions from starting 
            state */
         res = eventConsumed;
         break;
      };
      case Furnace_working:
      {
         /* process out transitions from working
            state */
         res = eventConsumed;
         break;
      };
      default:
      break;
   };
   return res;
}

피드백