public Task <List <StreamSubscription> > GetAllSubscriptions(StreamId streamId, IStreamConsumerExtension streamConsumer = null) { if (!ImplicitStreamSubscriberTable.IsImplicitSubscribeEligibleNameSpace(streamId.Namespace)) { return(Task.FromResult(new List <StreamSubscription>())); } if (streamConsumer != null) { var subscriptionId = CreateSubscriptionId(streamId, streamConsumer); var grainId = streamConsumer as GrainReference; return(Task.FromResult(new List <StreamSubscription> { new StreamSubscription(subscriptionId.Guid, streamId.ProviderName, streamId, grainId.GrainId) })); } else { var implicitConsumers = this.implicitTable.GetImplicitSubscribers(streamId, grainFactory); var subscriptions = implicitConsumers.Select(consumer => { var grainRef = consumer.Value as GrainReference; var subId = consumer.Key; return(new StreamSubscription(subId, streamId.ProviderName, streamId, grainRef.GrainId)); }).ToList(); return(Task.FromResult(subscriptions)); } }
public Task <ISet <PubSubSubscriptionState> > RegisterProducer(StreamId streamId, string streamProvider, IStreamProducerExtension streamProducer) { ISet <PubSubSubscriptionState> result = new HashSet <PubSubSubscriptionState>(); if (!ImplicitStreamSubscriberTable.IsImplicitSubscribeEligibleNameSpace(streamId.Namespace)) { return(Task.FromResult(result)); } IDictionary <Guid, IStreamConsumerExtension> implicitSubscriptions = implicitTable.GetImplicitSubscribers(streamId, this.grainFactory); foreach (var kvp in implicitSubscriptions) { GuidId subscriptionId = GuidId.GetGuidId(kvp.Key); result.Add(new PubSubSubscriptionState(subscriptionId, streamId, kvp.Value)); } return(Task.FromResult(result)); }