示例#1
0
        internal void Packet(Parser.Packet packet)
        {
            var log = LogManager.GetLogger(Global.CallerName());

            log.Info(string.Format("writing packet {0}", packet));

            if (!Encoding)
            {
                Encoding = true;
                Encoder.Encode(packet, new Parser.Parser.Encoder.CallbackImp((data) =>
                {
                    var encodedPackets = (object[])data;
                    foreach (var packet1 in encodedPackets)
                    {
                        if (packet1 is string)
                        {
                            EngineSocket.Write((string)packet1);
                        }
                        else if (packet1 is byte[])
                        {
                            EngineSocket.Write((byte[])packet1);
                        }
                    }
                    Encoding = false;
                    ProcessPacketQueue();
                }));
            }
            else
            {
                PacketBuffer.Add(packet);
            }
        }
示例#2
0
 private void ProcessPacketQueue()
 {
     if (this.PacketBuffer.Count > 0 && !this.Encoding)
     {
         Parser.Packet pack = this.PacketBuffer[0];
         PacketBuffer.Remove(pack);
         this.Packet(pack);
     }
 }
示例#3
0
        private void OnAck(Parser.Packet packet)
        {
            var log = LogManager.GetLogger(Global.CallerName());

            log.Info(string.Format("calling ack {0} with {1}", packet.Id, packet.Data));
            var fn = Acks[packet.Id];

            Acks = Acks.Remove(packet.Id);

            var args = packet.GetDataAsList();

            fn.Call(args.ToArray());
        }
        private void OnAck(Parser.Packet packet)
        {
            var log = LogManager.GetLogger(Global.CallerName());

            log.Info(string.Format("calling ack {0} with {1}", packet.Id, packet.Data));
            IAck fn;

            if (!Acks.TryGetValue(packet.Id, out fn))
            {
                return;
            }
            Acks = Acks.Remove(packet.Id);

            var args = packet.GetDataAsList();

            fn.Call(args.ToArray());
        }
示例#5
0
 private void OnDecoded(Parser.Packet packet)
 {
     this.Emit(EVENT_PACKET, packet);
 }