分派事件

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;
}

回饋