示例#1
0
 public override Task <Unsubscription> Unsubscribe(Subscription request, ServerCallContext context)
 {
     SubscriberWritersMap.Remove(request.Id);
     return(Task.FromResult(new Unsubscription()
     {
         Id = request.Id
     }));
 }
示例#2
0
        public override async Task Subscribe(SubscriptionRequest request, IServerStreamWriter <Event> responseStream, ServerCallContext context)
        {
            SubscriberWritersMap.SetStream(request.Id, request.Type, responseStream);

            while (SubscriberWritersMap.Count > 0)
            {
                var @event = await EventsBuffer.ReceiveAsync();

                foreach (var x in SubscriberWritersMap[request.Type])
                {
                    try { await x.WriteAsync(@event); }
                    catch { SubscriberWritersMap.Remove(request.Id); }
                }
            }
        }
示例#3
0
 public override Task <UnsubscriptionRequest> Unsubscribe(UnsubscriptionRequest request, ServerCallContext context)
 {
     SubscriberWritersMap.Remove(request.Id);
     return(Task.FromResult(request));
 }