Ejemplo n.º 1
0
        public Task <IGrainReminder> RegisterOrUpdateReminder(string reminderName, TimeSpan dueTime, TimeSpan period)
        {
            this.EnsureReminderServiceRegistered();

            // Perform input volatility checks that are consistent with System.Threading.Timer
            // http://referencesource.microsoft.com/#mscorlib/system/threading/timer.cs,c454f2afe745d4d3,references
            var dueTm = (long)dueTime.TotalMilliseconds;

            if (dueTm < -1)
            {
                throw new ArgumentOutOfRangeException(nameof(dueTime), "Cannot use negative dueTime to create a reminder");
            }
            if (dueTm > MaxSupportedTimeout)
            {
                throw new ArgumentOutOfRangeException(
                          nameof(dueTime),
                          $"Cannot use value larger than {MaxSupportedTimeout}ms for dueTime when creating a reminder");
            }

            var periodTm = (long)period.TotalMilliseconds;

            if (periodTm < -1)
            {
                throw new ArgumentOutOfRangeException(nameof(period), "Cannot use negative period to create a reminder");
            }
            if (periodTm > MaxSupportedTimeout)
            {
                throw new ArgumentOutOfRangeException(
                          nameof(period),
                          $"Cannot use value larger than {MaxSupportedTimeout}ms for period when creating a reminder");
            }

            var reminderOptions   = serviceProvider.GetService <IOptions <ReminderOptions> >();
            var minReminderPeriod = reminderOptions.Value.MinimumReminderPeriod;

            if (period < minReminderPeriod)
            {
                var msg =
                    string.Format(
                        "Cannot register reminder {0} as requested period ({1}) is less than minimum allowed reminder period ({2})",
                        reminderName,
                        period,
                        minReminderPeriod);
                throw new ArgumentException(msg);
            }
            if (string.IsNullOrEmpty(reminderName))
            {
                throw new ArgumentException("Cannot use null or empty name for the reminder", nameof(reminderName));
            }

            return(GrainService.RegisterOrUpdateReminder(CallingGrainReference, reminderName, dueTime, period));
        }
Ejemplo n.º 2
0
        public Task <IGrainReminder> RegisterOrUpdateReminder(string reminderName, TimeSpan dueTime, TimeSpan period)
        {
            // Perform input volatility checks that are consistent with System.Threading.Timer
            // http://referencesource.microsoft.com/#mscorlib/system/threading/timer.cs,c454f2afe745d4d3,references
            var dueTm = (long)dueTime.TotalMilliseconds;

            if (dueTm < -1)
            {
                throw new ArgumentOutOfRangeException("dueTime", "Cannot use negative dueTime to create a reminder");
            }
            if (dueTm > MAX_SUPPORTED_TIMEOUT)
            {
                throw new ArgumentOutOfRangeException("dueTime", String.Format("Cannot use value larger than {0} for dueTime when creating a reminder", MAX_SUPPORTED_TIMEOUT));
            }

            var periodTm = (long)period.TotalMilliseconds;

            if (periodTm < -1)
            {
                throw new ArgumentOutOfRangeException("period", "Cannot use negative period to create a reminder");
            }
            if (periodTm > MAX_SUPPORTED_TIMEOUT)
            {
                throw new ArgumentOutOfRangeException("period", String.Format("Cannot use value larger than {0} for period when creating a reminder", MAX_SUPPORTED_TIMEOUT));
            }

            if (period < Constants.MinReminderPeriod)
            {
                string msg = string.Format("Cannot register reminder {0} as requested period ({1}) is less than minimum allowed reminder period ({2})", reminderName, period, Constants.MinReminderPeriod);
                throw new ArgumentException(msg);
            }
            if (String.IsNullOrEmpty(reminderName))
            {
                throw new ArgumentException("Cannot use null or empty name for the reminder", "reminderName");
            }

            return(GrainService.RegisterOrUpdateReminder(CallingGrainReference, reminderName, dueTime, period));
        }