Beispiel #1
0
 public async Task ProcessEventsAsync(PartitionContext context, IEnumerable <EventData> messages)
 {
     foreach (var @event in messages)
     {
         var args = new EventReceivedArgs(@event, context.PartitionId);
         Callback.Receive(args);
     }
     await context.CheckpointAsync();
 }
Beispiel #2
0
        private void Receive(object sender, EventReceivedArgs args)
        {
            Channel ch = OpenChannel(args.Event);

            bool isFirst = true;

            void Reply(ErrorInformation error, object value, bool more)
            {
                if (error != null)
                {
                    SendError(ch, error);
                }
                else
                {
                    if (isFirst && !more)
                    {
                        ch.Send("OK", new object[] { new[] { value } }); // Wrap into an array for backwards compatibility
                    }
                    else if (value != null)
                    {
                        ch.Send("STREAM", value);
                    }

                    if (!more)
                    {
                        if (!isFirst)
                        {
                            ch.Send("STREAM_DONE");
                        }
                        CloseChannel(ch);
                    }
                }

                isFirst = false;
            }

            ch.Error += (o, errorArgs) => RaiseError(errorArgs.Info);

            try
            {
                if (CoreServices.HasEvent(args.Event.Name))
                {
                    CoreServices.Invoke(this, args.Event.Name, ArgumentUnpacker.Unpack(args.Event.Args), Reply);
                }
                else
                {
                    Service.Invoke(args.Event.Name, ArgumentUnpacker.Unpack(args.Event.Args), Reply);
                }
            }
            catch (Exception e)
            {
                SendError(ch, new ErrorInformation(e.GetType().Name, e.Message, e.StackTrace));
            }
        }
Beispiel #3
0
 protected virtual void OnEventReceived(EventReceivedArgs args)
 => EventReceived?.Invoke(this, args);