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