/// <summary> /// Registers a Timer for the actor. A timer name is autogenerated by the runtime to keep track of it. /// </summary> /// <param name="timerName">Timer Name. If a timer name is not provided, a timer is autogenerated.</param> /// <param name="callback"> /// The name of the method to be called when the timer fires. /// It has one parameter: the state object passed to RegisterTimer. /// It returns a <see cref="System.Threading.Tasks.Task"/> representing the asynchronous operation. /// </param> /// <param name="callbackParams">An object containing information to be used by the callback method, or null.</param> /// <param name="dueTime">The amount of time to delay before the async callback is first invoked. /// Specify negative one (-1) milliseconds to prevent the timer from starting. /// Specify zero (0) to start the timer immediately. /// </param> /// <param name="period"> /// The time interval between invocations of the async callback. /// Specify negative one (-1) milliseconds to disable periodic signaling.</param> /// <returns>Returns IActorTimer object.</returns> public async Task <ActorTimer> RegisterTimerAsync( string timerName, string callback, byte[] callbackParams, TimeSpan dueTime, TimeSpan period) { EnsureInteractorInitialized(); // Validate that the timer callback specified meets all the required criteria for a valid callback method this.ValidateTimerCallback(this.Host, callback); // create a timer name to register with Dapr runtime. if (string.IsNullOrEmpty(timerName)) { timerName = $"{this.Id}_Timer_{Guid.NewGuid()}"; } var timerInfo = new TimerInfo(callback, callbackParams, dueTime, period); var actorTimer = new ActorTimer(timerName, timerInfo); var serializedTimer = JsonSerializer.Serialize <TimerInfo>(timerInfo); await this.Host.DaprInteractor.RegisterTimerAsync(this.actorTypeName, this.Id.ToString(), timerName, serializedTimer); return(actorTimer); }
public override async Task RegisterTimerAsync(ActorTimer timer) { if (timer == null) { throw new ArgumentNullException(nameof(timer)); } #pragma warning disable 0618 var timerInfo = new TimerInfo(timer.TimerCallback, timer.Data, timer.DueTime, timer.Period); #pragma warning restore 0618 var data = JsonSerializer.Serialize(timerInfo); await this.interactor.RegisterTimerAsync(timer.ActorType, timer.ActorId.ToString(), timer.Name, data); }
/// <summary> /// Registers a Timer for the actor. If a timer name is not provided, a timer is autogenerated. /// </summary> /// <param name="timerName">Timer Name. If a timer name is not provided, a timer is autogenerated.</param> /// <param name="asyncCallback"> /// A delegate that specifies a method to be called when the timer fires. /// It has one parameter: the state object passed to RegisterTimer. /// It returns a <see cref="System.Threading.Tasks.Task"/> representing the asynchronous operation. /// </param> /// <param name="state">An object containing information to be used by the callback method, or null.</param> /// <param name="dueTime">The amount of time to delay before the async callback is first invoked. /// Specify negative one (-1) milliseconds to prevent the timer from starting. /// Specify zero (0) to start the timer immediately. /// </param> /// <param name="period"> /// The time interval between invocations of the async callback. /// Specify negative one (-1) milliseconds to disable periodic signaling.</param> /// <returns>Returns IActorTimer object.</returns> protected async Task <IActorTimer> RegisterTimerAsync( string timerName, Func <object, Task> asyncCallback, object state, TimeSpan dueTime, TimeSpan period) { // create a timer name to register with Dapr runtime. if (string.IsNullOrEmpty(timerName)) { timerName = $"{this.Id}_Timer_{this.timers.Count + 1}"; } var actorTimer = new ActorTimer(this, timerName, asyncCallback, state, dueTime, period); await ActorRuntime.DaprInteractor.RegisterTimerAsync(this.actorImplementaionTypeName, this.Id.ToString(), timerName, actorTimer.SerializeToJson()); this.timers[timerName] = actorTimer; return(actorTimer); }
/// <summary> /// Registers a Timer for the actor. A timer name is autogenerated by the runtime to keep track of it. /// </summary> /// <param name="timerName">Timer Name. If a timer name is not provided, a timer is autogenerated.</param> /// <param name="callback"> /// The name of the method to be called when the timer fires. /// It has one parameter: the state object passed to RegisterTimer. /// It returns a <see cref="System.Threading.Tasks.Task"/> representing the asynchronous operation. /// </param> /// <param name="callbackParams">An object containing information to be used by the callback method, or null.</param> /// <param name="dueTime">The amount of time to delay before the async callback is first invoked. /// Specify negative one (-1) milliseconds to prevent the timer from starting. /// Specify zero (0) to start the timer immediately. /// </param> /// <param name="period"> /// The time interval between invocations of the async callback. /// Specify negative one (-1) milliseconds to disable periodic signaling.</param> /// <returns>Returns IActorTimer object.</returns> public async Task <ActorTimer> RegisterTimerAsync( string timerName, string callback, byte[] callbackParams, TimeSpan dueTime, TimeSpan period) { // Validate that the timer callback specified meets all the required criteria for a valid callback method this.ValidateTimerCallback(this.Host, callback); // create a timer name to register with Dapr runtime. if (string.IsNullOrEmpty(timerName)) { timerName = $"{this.Id}_Timer_{Guid.NewGuid()}"; } var actorTimer = new ActorTimer(this.actorTypeName, this.Id, timerName, callback, callbackParams, dueTime, period); await this.Host.TimerManager.RegisterTimerAsync(actorTimer); return(actorTimer); }
/// <summary> /// Unregisters a Timer previously set on this actor. /// </summary> /// <param name="timer">An IActorTimer representing timer that needs to be unregistered.</param> /// <returns>Task representing the Unregister timer operation.</returns> protected async Task UnregisterTimerAsync(ActorTimer timer) { await ActorRuntime.DaprInteractor.UnregisterTimerAsync(this.actorTypeName, this.Id.ToString(), timer.Name); }
public override Task RegisterTimerAsync(ActorTimer timer) { throw new NotImplementedException(Message); }
/// <summary> /// Unregisters a Timer previously set on this actor. /// </summary> /// <param name="timer">An IActorTimer representing timer that needs to be unregistered.</param> /// <returns>Task representing the Unregister timer operation.</returns> protected async Task UnregisterTimerAsync(ActorTimer timer) { await this.Host.TimerManager.UnregisterTimerAsync(timer); }
/// <summary> /// Registers the provided timer with the runtime. /// </summary> /// <param name="timer">The <see cref="ActorTimer" /> to register.</param> /// <returns>A task which will complete when the operation completes.</returns> public abstract Task RegisterTimerAsync(ActorTimer timer);
/// <summary> /// Unregisters a Timer previously set on this actor. /// </summary> /// <param name="timer">An IActorTimer representing timer that needs to be unregistered.</param> /// <returns>Task representing the Unregister timer operation.</returns> protected async Task UnregisterTimerAsync(ActorTimer timer) { EnsureInteractorInitialized(); await this.Host.DaprInteractor.UnregisterTimerAsync(this.actorTypeName, this.Id.ToString(), timer.Name); }