public void Call(params object[] args) { if (sent[0]) { return; } sent[0] = true; var log = LogManager.GetLogger(GlobalHelper.CallerName()); var jsonArgs = Packet.Args2JArray(args); log.Info(string.Format("sending ack {0}", args.Length != 0 ? jsonArgs.ToString() : "null")); var parserType = HasBinaryData.HasBinary(args) ? Parser.BINARY_ACK : Parser.ACK; var packet = new Packet(parserType, jsonArgs); packet.Id = Id; socket.PacketProcess(packet); }
public override Emitter Emit(string eventString, params object[] args) { var log = LogManager.GetLogger(GlobalHelper.CallerName()); if (Events.Contains(eventString)) { base.Emit(eventString, args); return(this); } var _args = new List <object> { eventString }; _args.AddRange(args); var jsonArgs = Packet.Args2JArray(_args); var parserType = HasBinaryData.HasBinary(jsonArgs) ? Parser.BINARY_EVENT : Parser.EVENT; var packet = new Packet(parserType, jsonArgs); var lastArg = _args[_args.Count - 1]; if (lastArg is IAck) { log.Info(string.Format("emitting packet with ack id {0}", Ids)); Acks.TryAdd(Ids, (IAck)lastArg); jsonArgs = Packet.Remove(jsonArgs, jsonArgs.Count - 1); packet.Data = jsonArgs; packet.Id = Ids++; } if (Connected) { log.Info(string.Format("Already connected for {0}... proceeding with packets", Ids)); PacketProcess(packet); } else { log.Info(string.Format("NOT connected for {0}... adding packet to queue", Ids)); SendBuffer.Enqueue(packet); } return(this); }