private async Task BindExtensionLazy() { if (myExtension == null) { using (await bindExtLock.LockAsync()) { if (myExtension == null) { if (logger.IsVerbose) { logger.Verbose("BindExtensionLazy - Binding local extension to stream runtime={0}", providerRuntime); } var tup = await providerRuntime.BindExtension <StreamConsumerExtension, IStreamConsumerExtension>( () => new StreamConsumerExtension(providerRuntime)); myExtension = tup.Item1; myGrainReference = tup.Item2; if (logger.IsVerbose) { logger.Verbose("BindExtensionLazy - Connected Extension={0} GrainRef={1}", myExtension, myGrainReference); } } } } }
private async Task <ISet <PubSubSubscriptionState> > RegisterProducer() { (myExtension, myGrainReference) = providerRuntime.BindExtension <SimpleMessageStreamProducerExtension, IStreamProducerExtension>( () => new SimpleMessageStreamProducerExtension(providerRuntime, pubSub, this.logger, fireAndForgetDelivery, optimizeForImmutableData)); myExtension.AddStream(stream.InternalStreamId); // Notify streamRendezvous about new stream streamProducer. Retreave the list of RemoteSubscribers. return(await pubSub.RegisterProducer(stream.InternalStreamId, myGrainReference)); }
private async Task <ISet <PubSubSubscriptionState> > RegisterProducer() { var tup = await providerRuntime.BindExtension <SimpleMessageStreamProducerExtension, IStreamProducerExtension>( () => new SimpleMessageStreamProducerExtension(providerRuntime, fireAndForgetDelivery)); myExtension = tup.Item1; myGrainReference = tup.Item2; myExtension.AddStream(stream.StreamId); // Notify streamRendezvous about new stream streamProducer. Retreave the list of RemoteSubscribers. return(await pubSub.RegisterProducer(stream.StreamId, streamProviderName, myGrainReference)); }
public static async Task <StreamConsumerExtension> BindExtensionLazy(IStreamProviderRuntime providerRuntime, Logger logger, bool IsRewindable, AsyncLock bindExtLock) { using (await bindExtLock.LockAsync()) { if (logger.IsVerbose) { logger.Verbose("BindExtensionLazy - Binding local extension to stream runtime={0}", providerRuntime); } var tup = await providerRuntime.BindExtension <StreamConsumerExtension, IStreamConsumerExtension>( () => new StreamConsumerExtension(providerRuntime, IsRewindable)); var myExtension = tup.Item1; var myGrainReference = tup.Item2; if (logger.IsVerbose) { logger.Verbose("BindExtensionLazy - Connected Extension={0} GrainRef={1}", myExtension, myGrainReference); } return(myExtension); } }
private async Task BindExtensionLazy() { if (myExtension == null) { using (await bindExtLock.LockAsync()) { if (myExtension == null) { if (logger.IsEnabled(LogLevel.Debug)) { logger.Debug("BindExtensionLazy - Binding local extension to stream runtime={0}", providerRuntime); } (myExtension, myGrainReference) = providerRuntime.BindExtension <StreamConsumerExtension, IStreamConsumerExtension>(() => new StreamConsumerExtension(providerRuntime)); if (logger.IsEnabled(LogLevel.Debug)) { logger.Debug("BindExtensionLazy - Connected Extension={0} GrainRef={1}", myExtension, myGrainReference); } } } } }
private void InstallStreamConsumerExtension(IGrainContext context, IStreamSubscriptionObserver observer) { _streamProviderRuntime.BindExtension <StreamConsumerExtension, IStreamConsumerExtension>(() => new StreamConsumerExtension(_streamProviderRuntime, observer)); }