public Emitter HandleEmitAck(object sender, string Event, object Object, AckCall ack) { if (!_singleAckCallbacks.ContainsKey(Event)) { return(this); } var listener = _singleAckCallbacks[Event]; listener(sender, Event, Object, ack); return(this); }
public Task <bool> EmitAsync(string Event, object Object, AckCall ack) { Log($"Emit with ack invoked, Event {Event}, Object {Object}, ACK {ack.GetMethodInfo().Name}."); var count = Interlocked.Increment(ref _counter); var eventObject = new Dictionary <string, object> { { "event", Event }, { "data", Object }, { "cid", count } }; _acks.Add(count, GetAckObject(Event, ack)); var json = _options.Serializer.Serialize(eventObject); return(_socket.SendAsync(json)); }
public Task <bool> UnsubscribeAsync(string channel, AckCall ack) { Log($"Unsubscribe with ACK invoked, Channel {channel}, ACK {ack.GetMethodInfo().Name}."); var count = Interlocked.Increment(ref _counter); var subscribeObject = new Dictionary <string, object> { { "event", "#unsubscribe" }, { "data", channel }, { "cid", count } }; _acks.Add(count, GetAckObject(channel, ack)); var json = _options.Serializer.Serialize(subscribeObject); return(_socket.SendAsync(json)); }
public Task <bool> PublishAsync(string channel, object data, AckCall ack) { Log($"Publish with ACK invoked, Channel {channel}, Data {data}, ACK {ack.GetMethodInfo().Name}."); var count = Interlocked.Increment(ref _counter); var publishObject = new Dictionary <string, object> { { "event", "#publish" }, { "data", new Dictionary <string, object> { { "channel", channel }, { "data", data } } }, { "cid", count } }; _acks.Add(count, GetAckObject(channel, ack)); var json = _options.Serializer.Serialize(publishObject); return(_socket.SendAsync(json)); }
public async Task UnsubscribeAsync(AckCall ack) { await _socket.UnsubscribeAsync(_channelName, ack); _socket.Channels.Remove(this); }
public void Unsubscribe(AckCall ack) { _socket.Unsubscribe(_channelName, ack); _socket.Channels.Remove(this); }
public Task PublishAsync(object data, AckCall ack) => _socket.PublishAsync(_channelName, data, ack);
public void Publish(object data, AckCall ack) => _socket.Publish(_channelName, data, ack);
public async Task <Channel> SubscribeAsync(AckCall ack) { await _socket.SubscribeAsync(_channelName, ack); return(this); }
public Channel Subscribe(AckCall ack) { _socket.Subscribe(_channelName, ack); return(this); }
private static object[] GetAckObject(string Event, AckCall ack) => new object[] { Event, ack };