/// <summary> /// 共通処理をコントローラーに登録 /// </summary> /// <param name="code">イベントセグメント</param> /// <param name="mask">セグメントマスク(0-15)。0:root 1:leaf</param> /// <param name="m">ミドルウェアメソッド</param> public void RegisterMiddleware(ushort code, int mask, PacketMiddleware m) { mask &= 0x0f; code = (ushort)((code >> (0x10 - mask)) << (0x10 - mask)); if (!m_rawMiddlewareTable.TryGetValue(code, out PacketMiddleware[] middlewareMap))
/// <summary> /// 処理ロジック(共通部分)を登録する /// </summary> /// <param name="code">イベントコード</param> /// <param name="mask">セグメントマスク(0-16)。0=ルート, 16=リーフ</param> /// <param name="m">ミドルウェア関数</param> public void Use(ushort code, int mask, PacketMiddleware m) { _controller.RegisterMiddleware(code, mask, m); }
protected static PacketMiddleware Combine(PacketMiddleware l, PacketMiddleware r) { return((PacketHandler h) => l(r(h))); }
/// <summary> /// 受信時の処理メソッドにミドルウェアを付加 /// </summary> /// <param name="code">イベントコード</param> /// <param name="m">処理メソッドのミドルウェア</param> public void OnReceivedPacket(ushort code, PacketMiddleware m) { Use(code, 0x10, m); }