Example #1
0
        public void Participate(ISiloLifecycle lifecycle)
        {
            Nekara.Models.Task OnStart(CancellationToken ct)
            {
                this.listenToClusterChangeTask = ListenToClusterChange();
                return(Nekara.Models.Task.CompletedTask);
            };
            async Nekara.Models.Task OnStop(CancellationToken ct)
            {
                this.shutdownToken.Cancel();
                if (listenToClusterChangeTask != default && !ct.IsCancellationRequested)
                {
                    await listenToClusterChangeTask.WithCancellation(ct);
                }
            };

            lifecycle.Subscribe(nameof(GrainLocator), ServiceLifecycleStage.RuntimeGrainServices, OnStart, OnStop);
        }