示例#1
0
    /// <summary>
    /// イベント送信
    /// </summary>
    /// <param name="Code">イベントコード</param>
    /// <param name="SendPacket">送信パケット</param>
    public void SendEvent(IPacket SendPacket)
    {
        DictionaryStreamWriter Writer = new DictionaryStreamWriter();

        SendPacket.Serialize(Writer);
        var Data = new EventData((byte)SendPacket.PacketID, Writer.Dest);

        SendEvent(Data, new SendParameters());
    }
        /// <summary>
        /// レスポンスの伴わないパケットを送信
        /// </summary>
        /// <param name="SendPacket">パケット</param>
        public void SendReport(IPacket SendPacket)
        {
            if (Peer == null)
            {
                Debug.LogError("Peer is null.");
                return;
            }
            DictionaryStreamWriter Writer = new DictionaryStreamWriter();

            SendPacket.Serialize(Writer);
            Peer.OpCustom((byte)SendPacket.PacketID, Writer.Dest, false);
        }
示例#3
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);
        }