private void CompleteMessageRecived(InboundMessageBuffer.CompletedMessage msg) { msg.UDP = true; IPEndPoint clientAddress = msg.Tag as IPEndPoint; NetworkMessage unpacked = null; if (AcceptableMessages != null) { unpacked = AcceptableMessages.Unpack(msg.ID, msg.Data, true); } if (unpacked == null) { Logger.Log3("Unknown UDP Packet " + Encoding.ASCII.GetString(msg.Data)); return; } ServerPlayer player = GetPlayerForAddress(unpacked as MsgUDPLinkRequest, clientAddress); if (player != null) { player.InboundUDP.AddData(msg.Data); } else { Logger.Log3("Unknown UDP Player Msg" + unpacked.CodeAbreviation); } }
protected virtual NetworkMessage ProcessOne(InboundMessageBuffer.CompletedMessage buffer) { NetworkMessage msg = Factory.Unpack(buffer.ID, buffer.Data); if (msg != null) { msg.FromUDP = buffer.UDP; return(msg); } return(null); }
protected void ProcessMessage(InboundMessageBuffer.CompletedMessage buffer) { NetworkMessage msg = MessageFactory.Unpack(buffer.ID, buffer.Data); if (msg != null) { msg.FromUDP = buffer.UDP; if (MessageReceived != null) { MessageReceived.Invoke(this, new MessageReceivedEventArgs(this, msg)); } } }
protected void ProcessUDPPackets(IPEndPoint ep, byte[] data) { if (data.Length < 4) { return; } int len = BufferUtils.ReadUInt16(data, 0); int code = BufferUtils.ReadUInt16(data, 2); InboundMessageBuffer.CompletedMessage msg = new InboundMessageBuffer.CompletedMessage(); msg.ID = code; msg.Size = len; if (data.Length < len + 4) { return; } msg.Tag = ep; msg.Data = new byte[len]; Array.Copy(data, 4, msg.Data, 0, len); string msgCode = Encoding.ASCII.GetString(data, 2, 2); if (AcceptableClients.ContainsKey(ep.Address)) { CompleteMessageRecived(msg); } else if (AllowAll && OutOfBandUDPMessage != null) { OutOfBandUDPEventArgs args = new OutOfBandUDPEventArgs(); args.DataBuffer = data; args.Source = ep; OutOfBandUDPMessage.Invoke(this, args); } }