コード例 #1
0
        public MockedFailedScheduledTaskEngine(ScheduledTaskMonitorContext context, ScheduledTaskExecutionInfo fakeItemForGetScheduledTasksToRun = null)
            : base(context)
        {
            ExitStrategy.Quitting = false; // <<==== IMPORTANT! Otherwise the engine "loop" will just quit before it has even started
            _getReturnItem = fakeItemForGetScheduledTasksToRun;

            FinalStatusOutcomeDeterminedHandler += outcomeStatusId =>
            {
                StatusResult = outcomeStatusId;
                ExitStrategy.Quitting = true;
            };

        }
コード例 #2
0
        protected List<ScheduledTaskExecutionInfo> GetScheduledTasksToRun(ScheduledTaskStatusId scheduledTaskStatusId)
        {
            var scheduledTasksToRun = new List<ScheduledTaskExecutionInfo>();

            OperationContext.ThreadSafeDataAccess.DataAccessOperation(() =>
            {
                using (var database = new CloudCoreDB())
                {
                    scheduledTasksToRun = (from t in database.Cloudcore_ScheduledTasksToRun((int)scheduledTaskStatusId, KeepAliveSettings.Instance.TimeOutInSeconds)
                                           let scheduledTaskId = t.ScheduledTaskId
                                           where scheduledTaskId.HasValue
                                           let scheduledTaskGuid = t.ScheduledTaskGuid
                                           where scheduledTaskGuid.HasValue
                                           let retries = t.Retries
                                           where retries.HasValue
                                           let maxRetries = t.MaxRetries
                                           where maxRetries.HasValue
                                           let scheduledTaskTypeId = t.ScheduledTaskTypeId
                                           where scheduledTaskTypeId != null
                                           select new ScheduledTaskExecutionInfo
                                           {
                                               ScheduledTaskId = scheduledTaskId.Value,
                                               ScheduledTaskGuid = scheduledTaskGuid.Value,
                                               ScheduledTaskName = t.ScheduledTaskName,
                                               ScheduledTaskType = (ExecutionType)scheduledTaskTypeId.Value,
                                               CurrentRetries = retries.Value,
                                               MaximumRetries = maxRetries.Value
                                           }).ToList();
                }
            });

            return scheduledTasksToRun;
        }
コード例 #3
0
        protected virtual void UpdateFailureOutcome(int scheduledTaskId, string message, ScheduledTaskStatusId outcomeStatus)
        {
            try
            {
                OperationContext.ThreadSafeDataAccess.DataAccessOperation(() =>
                {
                    using (var database = new CloudCoreDB())
                    {
                        database.Cloudcore_ScheduledTaskUpdateOutcome(scheduledTaskId, (byte)outcomeStatus, message);
                    }
                });
            }
            catch (DataThreadDeadlockException ex)
            {
                Logger.Fatal(string.Format("Unable to update scheduled task final failure outcome after execution (ID {0}). Exiting...", scheduledTaskId),
                             ex, OperationContext.LoggingCategory);

                ExitStrategy.Quitting = true;
                throw;
            }
        }
コード例 #4
0
 private void OnFailureStatusOutcomeDetermined(ScheduledTaskStatusId outcomeStatusId)
 {
     if (FinalStatusOutcomeDeterminedHandler != null)
         FinalStatusOutcomeDeterminedHandler.Invoke(outcomeStatusId);
 }
コード例 #5
0
 protected override void UpdateFailureOutcome(int scheduledTaskId, string message, ScheduledTaskStatusId outcome) { }