Пример #1
0
        public override async Task Subscribe(Subscription subscription, IServerStreamWriter <Event> responseStream, ServerCallContext context)
        {
            //Dict to hold a streamWriter for each subscriber.
            SubscriberWritersMap[subscription.Id] = responseStream;

            while (SubscriberWritersMap.Count > 0)
            {
                //Wait on BufferBlock from MS Dataflow package.
                var subscriptionEvent = await _buffer.ReceiveAsync();

                if (SubscriberWritersMap.ContainsKey(subscriptionEvent.SubscriptionId))
                {
                    await SubscriberWritersMap[subscriptionEvent.SubscriptionId].WriteAsync(subscriptionEvent.Event);
                }
            }
        }
Пример #2
0
 public override Task <IsSubscribedResponse> IsSubscribed(IsSubscribedRequest request, ServerCallContext context)
 {
     return(Task.FromResult(new IsSubscribedResponse {
         Subscribed = SubscriberWritersMap.ContainsKey(request.Id)
     }));
 }