protected override void ProcessJobResult(FinishedJobInfo jobResult) { Guid scheduledJobId = jobResult.get_ScheduledJobId(); OneTimeJobManager.PendingJobItem pendingJobItem; if (this.pendingJobs.TryGetValue(scheduledJobId, out pendingJobItem)) { OneTimeJobRawResult result = new OneTimeJobRawResult(); try { result.Success = jobResult.get_Result().get_State() == 6 && string.IsNullOrEmpty(jobResult.get_Result().get_Error()); if (jobResult.get_Result().get_IsResultStreamed()) { using (IJobSchedulerHelper ijobSchedulerHelper = this.jobSchedulerHelperFactory()) { using (Stream jobResultStream = ((IJobScheduler)ijobSchedulerHelper).GetJobResultStream(jobResult.get_Result().get_JobId(), "JobResult")) { result.JobResultStream = (Stream) new DynamicStream(); jobResultStream.CopyTo(result.JobResultStream); result.JobResultStream.Position = 0L; } ((IJobScheduler)ijobSchedulerHelper).DeleteJobResult(jobResult.get_Result().get_JobId()); } } else if (jobResult.get_Result().get_Output() != null && jobResult.get_Result().get_Output().Length != 0) { result.JobResultStream = (Stream) new MemoryStream(jobResult.get_Result().get_Output()); } result.Error = jobResult.get_Result().get_Error(); OneTimeJobManager.Logger.InfoFormat("Result of one time job {0} received", (object)scheduledJobId); } catch (Exception ex) { result.Success = false; result.Error = Resources.get_TestErrorInvalidResult(); OneTimeJobManager.Logger.ErrorFormat("Failed to process result of one time job {0}: {1}", (object)scheduledJobId, (object)ex); } pendingJobItem.Done(result); } else { OneTimeJobManager.Logger.ErrorFormat("Result of unknown job {0} received", (object)scheduledJobId); if (jobResult.get_Result() == null || !jobResult.get_Result().get_IsResultStreamed()) { return; } using (IJobSchedulerHelper ijobSchedulerHelper = this.jobSchedulerHelperFactory()) ((IJobScheduler)ijobSchedulerHelper).DeleteJobResult(jobResult.get_Result().get_JobId()); } }
protected override void ProcessJobFailure(FinishedJobInfo jobResult) { Guid scheduledJobId = jobResult.get_ScheduledJobId(); OneTimeJobManager.PendingJobItem pendingJobItem; if (this.pendingJobs.TryGetValue(scheduledJobId, out pendingJobItem)) { OneTimeJobRawResult result = new OneTimeJobRawResult() { Success = false, Error = Resources.get_TestErrorJobFailed() }; OneTimeJobManager.Logger.WarnFormat("Job {0} failed with error: {1}", (object)scheduledJobId, (object)jobResult.get_Result().get_Error()); pendingJobItem.Done(result); } else { OneTimeJobManager.Logger.ErrorFormat("Failure of unknown job {0} received", (object)scheduledJobId); } }