イベントのディスパッチング

dispatchEvent() 操作は、switch ステートメントを使用して、オブジェクトの状態からのアウトバウンド遷移を処理します。

このタスクについて

例えば、HomeHeatingSystem の例の Furnace の作動状態用に生成された dispatchEvent() 操作は、 おおよそ以下のような switch ステートメントを使用して、作動直交状態のサブ状態 idle (アイドル)、shutting (遮断中)、working (作動中)、および starting (開始中) からのアウト遷移を処理します。

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

フィードバック