예제 #1
0
        private void PromoteToStarted()
        {
            if (StoppedCancellationTokenSource.IsCancellationRequested)
            {
                return;
            }

            // Logger.Info(ErrorCode.RS_ServiceStarted, "Reminder system target started OK on: {0} x{1,8:X8}, with range {2}", this.Silo, this.Silo.GetConsistentHashCode(), this.myRange);

            var random  = new SafeRandom();
            var dueTime = random.NextTimeSpan(Constants.RefreshReminderList);

            if (listRefreshTimer != null)
            {
                listRefreshTimer.Dispose();
            }
            listRefreshTimer = GrainTimer.FromTaskCallback(
                this.RuntimeClient.Scheduler,
                _ => ReadAndUpdateReminders(),
                null,
                dueTime,
                Constants.RefreshReminderList,
                name: "ReminderService.ReminderListRefresher");
            listRefreshTimer.Start();
            Status = GrainServiceStatus.Started;
            startedTask.TrySetResult(true);
        }
예제 #2
0
            public void StartTimer(OrleansTaskScheduler scheduler, Func <object, Task> asyncCallback, Logger Logger)
            {
                StopReminder(Logger); // just to make sure.
                var dueTimeSpan = CalculateDueTime();

                Timer = GrainTimer.FromTaskCallback(scheduler, asyncCallback, this, dueTimeSpan, period, name: ReminderName);
                if (Logger.IsVerbose)
                {
                    Logger.Verbose("Reminder {0}, Due time{1}", this, dueTimeSpan);
                }
                Timer.Start();
            }
예제 #3
0
 private void Start()
 {
     var random = new SafeRandom();
     var randomOffset = random.NextTimeSpan(orleansConfig.Globals.ClientRegistrationRefresh);
     clientRefreshTimer = GrainTimer.FromTaskCallback(
             OnClientRefreshTimer, 
             null, 
             randomOffset, 
             orleansConfig.Globals.ClientRegistrationRefresh, 
             "ClientObserverRegistrar.ClientRefreshTimer");
     clientRefreshTimer.Start();
     if (logger.IsVerbose) { logger.Verbose("Client registrar service started successfully."); }
 }
예제 #4
0
        private void StartTimer()
        {
            if (timer != null)
                timer.Dispose();

            timer = GrainTimer.FromTimerCallback(
                this.RuntimeClient.Scheduler,
                this.OnGossipTimerTick,
                null,
                this.backgroundGossipInterval,
                this.backgroundGossipInterval,
                "MultiCluster.GossipTimer");

            timer.Start();
        }
예제 #5
0
        protected override async Task StartInBackground()
        {
            await DoInitialReadAndUpdateReminders();

            if (Status == GrainServiceStatus.Booting)
            {
                var random = new SafeRandom();
                listRefreshTimer = GrainTimer.FromTaskCallback(
                    _ => DoInitialReadAndUpdateReminders(),
                    null,
                    random.NextTimeSpan(InitialReadRetryPeriod),
                    InitialReadRetryPeriod,
                    name: "ReminderService.ReminderListInitialRead");
                listRefreshTimer.Start();
            }
        }
예제 #6
0
        private void Start()
        {
            var random       = new SafeRandom();
            var randomOffset = random.NextTimeSpan(orleansConfig.Globals.ClientRegistrationRefresh);

            clientRefreshTimer = GrainTimer.FromTaskCallback(
                OnClientRefreshTimer,
                null,
                randomOffset,
                orleansConfig.Globals.ClientRegistrationRefresh,
                "ClientObserverRegistrar.ClientRefreshTimer");
            clientRefreshTimer.Start();
            if (logger.IsVerbose)
            {
                logger.Verbose("Client registrar service started successfully.");
            }
        }
예제 #7
0
 public Task Start()
 {
     requestProcessor = GrainTimer.FromTaskCallback(this.RuntimeClient.Scheduler, this.loggerFactory.CreateLogger <GrainTimer>(), ProcessRequests, null, TimeSpan.FromMilliseconds(0), TimeSpan.FromMilliseconds(10), "TransactionAgent");
     requestProcessor.Start();
     return(Task.CompletedTask);
 }