public override Task OnActivateAsync()
 {
     base.OnActivateAsync();
     StreamConsumer = new TransactionalStreamConsumer(GetStreamProvider(StreamProviderNamespace), TearDown);
     StreamSender   = new StreamMessageSender <TOut>(GetStreamProvider(StreamProviderNamespace), this.GetPrimaryKey());
     RegisterMessages();
     return(TaskDone.Done);
 }
예제 #2
0
 public override async Task OnActivateAsync()
 {
     OutputProducer = new StreamMessageSender <ContainerElement <T> >(GetStreamProvider(StreamProviderName), this.GetPrimaryKey());
     StreamMessageDispatchReceiver = new StreamMessageDispatchReceiver(GetStreamProvider(StreamProviderName), GetLogger(), TearDown);
     _streamTransactionReceiver    = new StreamTransactionReceiver(StreamMessageDispatchReceiver);
     StreamMessageDispatchReceiver.Register <ItemMessage <T> >(ProcessItemMessage);
     Elements = new ContainerElementList <T>(this.GetPrimaryKey(), this, this.AsReference <IContainerNodeGrain <T> >());
     await base.OnActivateAsync();
 }
        public virtual async Task TearDown()
        {
            if (StreamConsumer != null)
            {
                await StreamConsumer.TearDown();

                StreamConsumer = null;
            }

            if (StreamSender != null)
            {
                await StreamSender.TearDown();

                StreamSender = null;
            }
            DeactivateOnIdle();
        }
예제 #4
0
        protected StreamMessageSender <ContainerElement <T> > SetupSenderStream(StreamIdentity streamIdentity)
        {
            var transactionalSender = new StreamMessageSender <ContainerElement <T> >(GetStreamProvider(StreamProviderName), streamIdentity);

            return(transactionalSender);
        }