Ejemplo n.º 1
0
        private void GlobalHandler(string _, PusherEvent evt)
        {
            // Get timestamp earliest possible (outside async)
            var timestamp = _clock.GetCurrentInstant();

            async Task Inner()
            {
                await Task.Yield();

                try
                {
                    var data = TgbUtils.TryDecodePusherData(evt.Data);
                    await _pusherEventStore.SaveEvent(evt.ChannelName, evt.EventName, timestamp, data, evt.Data);
                }
                catch (Exception e)
                {
                    _logger.Error(e, "Error handling Pusher event {ChannelName}/{EventName}", evt.ChannelName, evt.EventName);
                }
            }

            // Fork
            var __ = Inner();
        }
Ejemplo n.º 2
0
        private Action <PusherEvent> WrapHandler(Func <JToken, Task> inner)
        {
            async Task Inner(PusherEvent evt)
            {
                try
                {
                    _logger.Verbose("Received Pusher event {EventName} on {ChannelName}: {Data}", evt.EventName,
                                    evt.ChannelName, evt.Data);

                    var data = TgbUtils.TryDecodePusherData(evt.Data);
                    await inner(data);
                }
                catch (Exception e)
                {
                    _logger.Error(e, "Error handling Pusher event {EventName}", evt.EventName);
                }
            }

            return(evt =>
            {
                // Fork inner task
                var _ = Inner(evt);
            });
        }