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); } }
private void ProcessPacketQueue() { if (this.PacketBuffer.Count > 0 && !this.Encoding) { Parser.Packet pack = this.PacketBuffer[0]; PacketBuffer.Remove(pack); this.Packet(pack); } }
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()); }
private void OnDecoded(Parser.Packet packet) { this.Emit(EVENT_PACKET, packet); }