Exemple #1
0
 /// <summary>
 /// オペレーションを受信した
 /// </summary>
 /// <param name="PacketID">パケットID</param>
 /// <param name="Params">パラメータ</param>
 public void OnRecvOperation(EPacketID PacketID, Dictionary <byte, object> Params)
 {
     if (OperationHandlers.ContainsKey(PacketID))
     {
         DictionaryStreamReader Reader = new DictionaryStreamReader(Params);
         var ResponsePacket            = OperationHandlers[PacketID]?.Invoke(Reader);
         if (ResponsePacket != null)      // ResponsePacketがnullならReportとして扱う
         {
             DictionaryStreamWriter Writer = new DictionaryStreamWriter();
             ResponsePacket.Serialize(Writer);
             var Response = new OperationResponse((byte)ResponsePacket.PacketID, Writer.Dest);
             Parent.SendOperationResponse(Response, new SendParameters());
         }
     }
 }
        /// <summary>
        /// リクエスト送信
        /// </summary>
        /// <param name="SendPacket">送信パケット</param>
        /// <param name="ResponsePacketID">レスポンスパケットのID</param>
        /// <param name="ResponseHandler">リクエストに対応するレスポンスのハンドラ</param>
        public void SendRequest(IPacket SendPacket, EPacketID ResponsePacketID, Action <IDictionaryStream> ResponseHandler)
        {
            if (Peer == null)
            {
                Debug.LogError("Peer is null.");
                return;
            }
            byte ByteID = (byte)ResponsePacketID;

            ResponseHandlers.Add(ByteID, ResponseHandler);

            DictionaryStreamWriter Writer = new DictionaryStreamWriter();

            SendPacket.Serialize(Writer);
            Peer.OpCustom((byte)SendPacket.PacketID, Writer.Dest, false);
        }
Exemple #3
0
 /// <summary>
 /// オペレーションのハンドラ追加
 /// </summary>
 /// <param name="PacketID">パケットID</param>
 /// <param name="Handler">ハンドラ</param>
 protected void AddOperationHandler(EPacketID PacketID, Func <IDictionaryStream, IPacket> Handler)
 {
     OperationHandlers.Add(PacketID, Handler);
 }
 /// <summary>
 /// イベントのハンドラを追加
 /// </summary>
 /// <param name="PacketID">パケットID</param>
 /// <param name="Handler">ハンドラ</param>
 public void AddEventHandler(EPacketID PacketID, Action <IDictionaryStream> Handler)
 {
     EventDic.Add((byte)PacketID, Handler);
 }