Пример #1
0
        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));
            }
        }
Пример #2
0
        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));
        }