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