Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }
Example #4
0
        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));
        }
Example #5
0
        public async Task UnsubscribeAsync(AckCall ack)
        {
            await _socket.UnsubscribeAsync(_channelName, ack);

            _socket.Channels.Remove(this);
        }
Example #6
0
 public void Unsubscribe(AckCall ack)
 {
     _socket.Unsubscribe(_channelName, ack);
     _socket.Channels.Remove(this);
 }
Example #7
0
 public Task PublishAsync(object data, AckCall ack) => _socket.PublishAsync(_channelName, data, ack);
Example #8
0
 public void Publish(object data, AckCall ack) => _socket.Publish(_channelName, data, ack);
Example #9
0
        public async Task <Channel> SubscribeAsync(AckCall ack)
        {
            await _socket.SubscribeAsync(_channelName, ack);

            return(this);
        }
Example #10
0
 public Channel Subscribe(AckCall ack)
 {
     _socket.Subscribe(_channelName, ack);
     return(this);
 }
Example #11
0
 private static object[] GetAckObject(string Event, AckCall ack) => new object[]
 {
     Event, ack
 };