コード例 #1
0
        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);
            }
        }
コード例 #2
0
 private void ConnectionHandeler_packetArrival(ServerIncomingPacket packet)
 {
     PacketRegistery <ServerOpCode, ServerIncomingPacket> .handlePacket handeler = packetRegister.getHandeler(packet.Opcode);
     if (handeler != null)
     {
         handeler.Invoke(packet);
     }
 }
コード例 #3
0
 private void ServerReceivedVersion(ServerIncomingPacket packet)
 {
     //Handle version packet
 }