Exemplo n.º 1
0
        public void ReceivedMessage(object peer)
        {
            NetIncomingMessage im;

            while ((im = client.ReadMessage()) != null)
            {
                switch (im.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.ErrorMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    string text = im.ReadString();
                    Log.Info("Network message: " + text);
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)im.ReadByte();
                    IsConnected = status == NetConnectionStatus.Connected;

                    if (IsConnected)
                    {
                        connectedEvent.Set();
                    }
                    else if (LostConnectionModal.Instance)
                    {
                        LostConnectionModal.Instance.Show();
                    }

                    Log.Info("IsConnected status: " + IsConnected);
                    break;

                case NetIncomingMessageType.Data:
                    if (im.Data.Length > 0)
                    {
                        Packet packet;

                        using (Stream stream = new MemoryStream(im.Data))
                        {
                            packet = (Packet)Packet.Serializer.Deserialize(stream);
                        }

                        packetReceiver.PacketReceived(packet);
                    }
                    break;

                default:
                    Log.Info("Unhandled lidgren message type: " + im.MessageType + " " + im.LengthBytes + " bytes " + im.DeliveryMethod + "|" + im.SequenceChannel);
                    break;
                }
                client.Recycle(im);
            }
        }
Exemplo n.º 2
0
        private void DataReceived(IAsyncResult ar)
        {
            Connection connection = (Connection)ar.AsyncState;

            foreach (Packet packet in connection.GetPacketsFromRecievedData(ar))
            {
                packetReceiver.PacketReceived(packet);
            }

            if (connection.Open)
            {
                connection.BeginReceive(new AsyncCallback(DataReceived));
            }
            else
            {
                Log.Debug("Error reading data from server");
                Stop();
            }
        }