分派事件

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:
      {
         /* 处理空闲状态的外发转换 */
         res = eventConsumed;
         break;
      };

      case Furnace_shutting:
      {
         /* 处理关闭状态的外发转换
            */
         res = eventConsumed;
         break;
      };
      case Furnace_starting:
      {
         /* 处理启动状态的外发转换
            */
         res = eventConsumed;
         break;
      };
      case Furnace_working:
      {
         /* 处理工作状态的外发转换
            */
         res = eventConsumed;
         break;
      };
      default:
      break;
   };
   return res;
}

反馈