in src/task/LongTimerTask.ts [28:57]
public constructor(
id: TaskID,
action: CreateTimerAction,
orchestrationContext: DurableOrchestrationContext,
executor: TaskOrchestrationExecutor,
maximumTimerLength: string,
longRunningTimerIntervalLength: string
) {
const maximumTimerDuration = moment.duration(maximumTimerLength);
const longRunningTimerIntervalDuration = moment.duration(longRunningTimerIntervalLength);
const currentTime = orchestrationContext.currentUtcDateTime;
const finalFireTime = action.fireAt;
const durationUntilFire = moment.duration(moment(finalFireTime).diff(currentTime));
const nextFireTime: Date =
durationUntilFire > maximumTimerDuration
? moment(currentTime).add(longRunningTimerIntervalDuration).toDate()
: finalFireTime;
const nextTimerAction = new CreateTimerAction(nextFireTime);
const nextTimerTask = new DFTimerTask(false, nextTimerAction);
super([nextTimerTask], action);
this.id = id;
this.action = action;
this.orchestrationContext = orchestrationContext;
this.executor = executor;
this.maximumTimerDuration = maximumTimerDuration;
this.longRunningTimerIntervalDuration = longRunningTimerIntervalDuration;
}