private void HandleRakNetPacket(IPEndPoint endPoint, byte[] bytes) { if (bytes?.Length != 0) { byte msgId = bytes[0]; RakNetPacket pk = this.GetRakNetPacket(msgId, bytes); if (pk != null) { RakNetPacketReceiveEventArgs ev = new RakNetPacketReceiveEventArgs(endPoint, pk); Server.Instance.Event.Network.OnRakNetPacketReceive(this, ev); if (ev.IsCancel) { return; } pk = ev.Packet; if (pk is OfflineMessage) { if (this.SessionCreated(endPoint)) { Logger.Debug("%server.network.raknet.sessionCreated", endPoint); return; } this.HandleOfflineMessage(endPoint, (OfflineMessage)pk); pk.Dispose(); return; } if (!this.SessionCreated(endPoint)) { Logger.Debug("%server.network.raknet.sessionNotCreated", endPoint); return; } if (pk is DataPacket) { NetworkSession session = this.GetSession(endPoint); session.HandleDataPacket((DataPacket)pk); pk.Dispose(); return; } if (pk is AcknowledgePacket) { NetworkSession session = this.GetSession(endPoint); session.HandleAcknowledgePacket((AcknowledgePacket)pk); pk.Dispose(); return; } } if (Server.Instance.Config.PacketDebug) { Logger.Debug("%server.network.raknet.notHandle", msgId.ToString("X")); } } }
public void OnRakNetPacketReceive(object sender, RakNetPacketReceiveEventArgs e) { this.RakNetPacketReceive?.Invoke(sender, e); }