Exemplo n.º 1
0
        private void BodyCallback(IAsyncResult ar)
        {
            try
            {
                int received = 0;
                ConnectionHandler connHandler = (ConnectionHandler)ar.AsyncState;
                received = connHandler.ClientSocket.EndReceive(ar);

                if (received == 0)
                {
                    return;
                }

                HeapByteBuf bodyBuffer = new HeapByteBuf(connHandler.ReceiveBuffer, received);

                connHandler.ParsePacket(bodyBuffer);

                connHandler.ParsingPacket = false;
                connHandler.ReceiveBuffer = new byte[4];
                connHandler.ClientSocket.BeginReceive(connHandler.ReceiveBuffer, 0, connHandler.ReceiveBuffer.Length, SocketFlags.None, new AsyncCallback(HeaderCallback), connHandler);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: {0}", e);
            }
        }
Exemplo n.º 2
0
        private void HeaderCallback(IAsyncResult ar)
        {
            try
            {
                int received = 0;
                ConnectionHandler connHandler = (ConnectionHandler)ar.AsyncState;
                received = connHandler.ClientSocket.EndReceive(ar);

                if (received == 0)
                {
                    return;
                }

                HeapByteBuf headerBuffer = new HeapByteBuf(connHandler.ReceiveBuffer, received);

                ushort type   = headerBuffer.ReadUnsignedShort();
                ushort length = headerBuffer.ReadUnsignedShort();

                connHandler.ParsingPacket   = true;
                connHandler.ParsingPacketId = type;

                connHandler.ReceiveBuffer = new byte[length];
                connHandler.ClientSocket.BeginReceive(connHandler.ReceiveBuffer, 0, connHandler.ReceiveBuffer.Length, SocketFlags.None, new AsyncCallback(BodyCallback), connHandler);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: {0}", e);
            }
        }
Exemplo n.º 3
0
        internal void ParsePacket(HeapByteBuf body, ushort packetId)
        {
            AbstractPacket packet = PacketRegistry.CreateInstance(packetId);

            packet.ReadFrom(body);
            this.HandlePacket(packet);
        }
Exemplo n.º 4
0
        internal async void ReadAsync()
        {
            DataReader    reader;
            StringBuilder strBuilder;

            using (reader = new DataReader(socket.InputStream))
            {
                strBuilder       = new StringBuilder();
                reader.ByteOrder = ByteOrder.BigEndian;

                await reader.LoadAsync(4);

                ushort packetId = reader.ReadUInt16();
                ushort length   = reader.ReadUInt16();

                await reader.LoadAsync(length);

                byte[] data = new byte[length];
                reader.ReadBytes(data);

                HeapByteBuf buf = new HeapByteBuf(data, length);
                this.ParsePacket(buf, packetId);

                reader.DetachStream();
            }
        }
Exemplo n.º 5
0
        internal async Task SendPacketAsync(AbstractPacket packet)
        {
            DataWriter writer;

            using (writer = new DataWriter(socket.OutputStream))
            {
                writer.ByteOrder = ByteOrder.BigEndian;

                HeapByteBuf dataBuf = new HeapByteBuf(16, 4096);
                packet.WriteTo(dataBuf);

                writer.WriteUInt16(packet.Id);
                writer.WriteUInt16((ushort)dataBuf.WriterIndex);
                writer.WriteBytes(dataBuf.GetBackingArray());

                try
                {
                    await writer.StoreAsync();
                }
                catch (Exception exception)
                {}

                await writer.FlushAsync();

                writer.DetachStream();
            }
        }
Exemplo n.º 6
0
 public abstract void WriteTo(HeapByteBuf buffer);
Exemplo n.º 7
0
 public abstract void ReadFrom(HeapByteBuf buffer);
Exemplo n.º 8
0
 public void Test()
 {
     HeapByteBuf buf = new HeapByteBuf(10, 50);
 }
Exemplo n.º 9
0
 public override void WriteTo(HeapByteBuf buffer)
 {
     buffer.WriteString(this.Username);
 }
Exemplo n.º 10
0
 public override void ReadFrom(HeapByteBuf buffer)
 {
     this.Username = buffer.ReadString();
 }