Esempio n. 1
0
        public void Serialize(Packer packer, object message)
        {
            if (!this.serializerByType.ContainsKey(message.GetType()))
                throw new ArgumentException("Cannot serialize type: " + message.GetType());

            this.PackID(packer, this.typeToID[message.GetType()]);

            ISerializer serializer = this.serializerByType[message.GetType()];
            serializer.Serialize(packer, message);
        }
Esempio n. 2
0
 private void PackID(Packer packer, int id)
 {
     if (this.nextID < sbyte.MaxValue)
     {
         packer.Pack((sbyte)id);
     }
     else if (this.nextID < short.MaxValue)
     {
         packer.Pack((short)id);
     }
     else
     {
         packer.Pack(id);
     }
 }
Esempio n. 3
0
 protected override void fixMessage(Packer packer, byte[] message)
 {
     packer.Pack((byte)Protocol.Unordered);
     packer.Pack(message);
 }
Esempio n. 4
0
 private byte[] Serialize(object toSend)
 {
     Packer packer = new Packer();
     this.serializeManager.Serialize(packer, toSend);
     return packer.GetPackedData();
 }
Esempio n. 5
0
            protected override void fixMessage(Packer packer, byte[] message)
            {
                int toSendAccNum = this.sendAccNum++;
                packer.Pack((byte)Protocol.Reliable);
                packer.Pack(toSendAccNum);
                packer.Pack(message);

                MessageResendTimer timer = new MessageResendTimer();
                timer.accnumber = toSendAccNum;
                timer.message = packer.GetPackedData();
                timer.stopWatch.Start();

                connection.reliableTimer.addResender(timer);
            }
Esempio n. 6
0
 private void sendAckMessage(int accnum)
 {
     Packer packer = new Packer(5);
     packer.Pack((byte)(((int)Protocol.Reliable) | ACK_BIT));
     packer.Pack(accnum);
     this.connection.SendInternal(packer.GetPackedData());
 }
Esempio n. 7
0
 protected abstract void fixMessage(Packer packer, byte[] message);
Esempio n. 8
0
 public void sendMessage(byte[] message)
 {
     Packer packer = new Packer(message.Length + getHeaderLength());
     fixMessage(packer, message);
     this.connection.SendInternal(packer.GetPackedData());
 }
Esempio n. 9
0
            private byte[] buildOrderedMessages(UnPacker unPacker)
            {
                List<int> keysToRemove = new List<int>();
                Packer packer = new Packer(unPacker.remaining());
                packer.Pack(unPacker.UnpackByteArray(unPacker.remaining()));

                foreach (var item in this.outOfOrderMessages.Keys)
                {
                    if (this.lastOrderedMessage + 1 == item)
                    {
                        keysToRemove.Add(item);
                        this.lastOrderedMessage++;
                        packer.Pack(this.outOfOrderMessages[item]);
                    }
                    else
                    {
                        break;
                    }
                }

                keysToRemove.ForEach((x) => this.outOfOrderMessages.Remove(x));

                return packer.GetPackedData();
            }
Esempio n. 10
0
 protected override void fixMessage(Packer packer, byte[] message)
 {
     packer.Pack((byte)Protocol.Ordered);
     packer.Pack(sendReciveSequenceNumber++);
     packer.Pack(message);
 }
Esempio n. 11
0
        private UdpClient SendConnectionAck(IPEndPoint endpoint)
        {
            UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Any, 0));
            client.Connect(endpoint);

            Packer packer = new Packer(4);
            packer.Pack(((IPEndPoint)client.Client.LocalEndPoint).Port);
            client.Send(packer.GetPackedData(), 4);
            return client;
        }