Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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));
                }
            }
        }
Example #4
0
        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);
            }
        }