private void buildRemainingPacket() { if (buffer.Length < this.currentLengthOfPacket) // Wait for more data... { throw new BufferUnderflowException("Not enought data in the buffer, we need to wait for more!"); } byte[] packetData = new byte[this.currentLengthOfPacket]; Array.Copy(buffer, packetData, packetData.Length); if (buffer.Length == this.currentLengthOfPacket) { buffer = null; } else { byte[] byteBuffer = new byte[buffer.Length - this.currentLengthOfPacket]; Array.Copy(this.buffer, this.currentLengthOfPacket, byteBuffer, 0, byteBuffer.Length); buffer = byteBuffer; } currentLengthOfPacket = -1; // Create new packet ServerIncomingPacket incomingPacket = new ServerIncomingPacket(packetData); // use C# events to tell every-one that there was a new packet if (packetArrival != null) { packetArrival.Invoke(incomingPacket); } }
private void ConnectionHandeler_packetArrival(ServerIncomingPacket packet) { PacketRegistery <ServerOpCode, ServerIncomingPacket> .handlePacket handeler = packetRegister.getHandeler(packet.Opcode); if (handeler != null) { handeler.Invoke(packet); } }
private void ServerReceivedVersion(ServerIncomingPacket packet) { //Handle version packet }