public override Task <Unsubscription> Unsubscribe(Subscription request, ServerCallContext context) { SubscriberWritersMap.Remove(request.Id); return(Task.FromResult(new Unsubscription() { Id = request.Id })); }
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); } } } }
public override Task <UnsubscriptionRequest> Unsubscribe(UnsubscriptionRequest request, ServerCallContext context) { SubscriberWritersMap.Remove(request.Id); return(Task.FromResult(request)); }