コード例 #1
0
        private void SubscriberHandler(IServerEventStream stream, IEventStreamSubscriber subscriber, IEventStreamBranch branch, object cookie)
        {
            IEventStreamSubscriptionRequest request = subscriber.Subscription;

            // log the subscriber
            LogMessage($"New subscriber {request.Caller} {request.SubscriptionContext.Arguments.AsString()}");

            // push an 'image' to that subscriber which is received *only* by it (last image pattern)

            // this will be received as an OOB data - see the demo subscriber code
            subscriber.Push(cb =>
                            cb.AddValue("SubscribersAsImage", _glue.AGMObjectSerializer.Serialize(stream.GetBranches()
                                                                                                  .SelectMany(b =>
                                                                                                              b.GetSubscribers().Select(sb => sb.Subscription.Caller)))));

            // e.g. keep the subscriptions in a list
            var subscriptionItem = $"{request.Caller.ApplicationName} {request.SubscriptionContext.Arguments.AsString()}";

            DispatchAction(() =>
            {
                ListViewSubscriptions.Items.Add(subscriptionItem);
                ListViewSubscriptions.ScrollIntoView(subscriptionItem);
            });
        }