public OneTimeJobResult <T> ExecuteJobAndGetResult <T>( string engineName, JobDescription jobDescription, CredentialBase jobCredential, JobResultDataFormatType resultDataFormat, string jobType) where T : class, new() { this.RouteJobToEngine(jobDescription, engineName); using (OneTimeJobRawResult timeJobRawResult = this.oneTimeJobManager.ExecuteJob(jobDescription, jobCredential)) { string error = timeJobRawResult.Error; if (!timeJobRawResult.Success) { OneTimeJobService.log.WarnFormat(jobType + " credential test failed: " + timeJobRawResult.Error, Array.Empty <object>()); string messageFromException = this.GetLocalizedErrorMessageFromException(timeJobRawResult.ExceptionFromJob); return(new OneTimeJobResult <T>() { Success = false, Message = string.IsNullOrEmpty(messageFromException) ? error : messageFromException }); } try { T obj; if (resultDataFormat == JobResultDataFormatType.Xml) { using (XmlTextReader xmlTextReader = new XmlTextReader(timeJobRawResult.JobResultStream)) { xmlTextReader.Namespaces = false; obj = (T) new XmlSerializer(typeof(T)).Deserialize((XmlReader)xmlTextReader); } } else { obj = SerializationHelper.Deserialize <T>(timeJobRawResult.JobResultStream); } return(new OneTimeJobResult <T>() { Success = true, Value = obj }); } catch (Exception ex) { OneTimeJobService.log.Error((object)string.Format("Failed to deserialize {0} credential test job result: {1}", (object)jobType, (object)ex)); return(new OneTimeJobResult <T>() { Success = false, Message = this.GetLocalizedErrorMessageFromException(timeJobRawResult.ExceptionFromJob) }); } } }
// Token: 0x060005C0 RID: 1472 RVA: 0x00022798 File Offset: 0x00020998 public OneTimeJobResult <T> ExecuteJobAndGetResult <T>(string engineName, JobDescription jobDescription, CredentialBase jobCredential, JobResultDataFormatType resultDataFormat, string jobType) where T : class, new() { this.RouteJobToEngine(jobDescription, engineName); OneTimeJobResult <T> result; using (OneTimeJobRawResult oneTimeJobRawResult = this.oneTimeJobManager.ExecuteJob(jobDescription, jobCredential)) { string error = oneTimeJobRawResult.Error; if (!oneTimeJobRawResult.Success) { OneTimeJobService.log.WarnFormat(jobType + " credential test failed: " + oneTimeJobRawResult.Error, Array.Empty <object>()); string localizedErrorMessageFromException = this.GetLocalizedErrorMessageFromException(oneTimeJobRawResult.ExceptionFromJob); result = new OneTimeJobResult <T> { Success = false, Message = (string.IsNullOrEmpty(localizedErrorMessageFromException) ? error : localizedErrorMessageFromException) }; } else { try { T value; if (resultDataFormat == JobResultDataFormatType.Xml) { using (XmlTextReader xmlTextReader = new XmlTextReader(oneTimeJobRawResult.JobResultStream)) { xmlTextReader.Namespaces = false; value = (T)((object)new XmlSerializer(typeof(T)).Deserialize(xmlTextReader)); goto IL_CF; } } value = SerializationHelper.Deserialize <T>(oneTimeJobRawResult.JobResultStream); IL_CF: result = new OneTimeJobResult <T> { Success = true, Value = value }; } catch (Exception arg) { OneTimeJobService.log.Error(string.Format("Failed to deserialize {0} credential test job result: {1}", jobType, arg)); result = new OneTimeJobResult <T> { Success = false, Message = this.GetLocalizedErrorMessageFromException(oneTimeJobRawResult.ExceptionFromJob) }; } } } return(result); }
// Token: 0x060005A9 RID: 1449 RVA: 0x00022360 File Offset: 0x00020560 protected override void ProcessJobResult(FinishedJobInfo jobResult) { Guid scheduledJobId = jobResult.ScheduledJobId; OneTimeJobManager.PendingJobItem pendingJobItem; if (this.pendingJobs.TryGetValue(scheduledJobId, out pendingJobItem)) { OneTimeJobRawResult result = default(OneTimeJobRawResult); try { result.Success = (jobResult.Result.State == 6 && string.IsNullOrEmpty(jobResult.Result.Error)); if (jobResult.Result.IsResultStreamed) { using (IJobSchedulerHelper jobSchedulerHelper = this.jobSchedulerHelperFactory()) { using (Stream jobResultStream = jobSchedulerHelper.GetJobResultStream(jobResult.Result.JobId, "JobResult")) { result.JobResultStream = new DynamicStream(); jobResultStream.CopyTo(result.JobResultStream); result.JobResultStream.Position = 0L; } jobSchedulerHelper.DeleteJobResult(jobResult.Result.JobId); goto IL_100; } } if (jobResult.Result.Output != null && jobResult.Result.Output.Length != 0) { result.JobResultStream = new MemoryStream(jobResult.Result.Output); } IL_100: result.Error = jobResult.Result.Error; OneTimeJobManager.Logger.InfoFormat("Result of one time job {0} received", scheduledJobId); } catch (Exception ex) { result.Success = false; result.Error = Resources.TestErrorInvalidResult; OneTimeJobManager.Logger.ErrorFormat("Failed to process result of one time job {0}: {1}", scheduledJobId, ex); } pendingJobItem.Done(result); return; } OneTimeJobManager.Logger.ErrorFormat("Result of unknown job {0} received", scheduledJobId); if (jobResult.Result != null && jobResult.Result.IsResultStreamed) { using (IJobSchedulerHelper jobSchedulerHelper2 = this.jobSchedulerHelperFactory()) { jobSchedulerHelper2.DeleteJobResult(jobResult.Result.JobId); } } }
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()); } }
// Token: 0x060005A8 RID: 1448 RVA: 0x000222E0 File Offset: 0x000204E0 protected override void ProcessJobFailure(FinishedJobInfo jobResult) { Guid scheduledJobId = jobResult.ScheduledJobId; OneTimeJobManager.PendingJobItem pendingJobItem; if (this.pendingJobs.TryGetValue(scheduledJobId, out pendingJobItem)) { OneTimeJobRawResult result = new OneTimeJobRawResult { Success = false, Error = Resources.TestErrorJobFailed }; OneTimeJobManager.Logger.WarnFormat("Job {0} failed with error: {1}", scheduledJobId, jobResult.Result.Error); pendingJobItem.Done(result); return; } OneTimeJobManager.Logger.ErrorFormat("Failure of unknown job {0} received", scheduledJobId); }
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); } }
// Token: 0x060005A6 RID: 1446 RVA: 0x00022104 File Offset: 0x00020304 public OneTimeJobRawResult ExecuteJob(JobDescription jobDescription, CredentialBase jobCredential = null) { if (this.listenerUri == string.Empty) { JobSchedulerEventServicev2.log.Error("ListenerUri remains uninitialized"); OneTimeJobRawResult result = new OneTimeJobRawResult { Success = false, Error = Resources.TestErrorJobFailed }; return(result); } if (jobCredential != null) { jobDescription.Credential = this.EncryptCredentials(jobCredential); } if (jobDescription.SupportedRoles == null) { jobDescription.SupportedRoles = 7; } ScheduledJob job = new ScheduledJob { NotificationAddress = this.listenerUri, State = "CoreOneTimeJob", RunOnce = true, IsOneShot = true, Job = jobDescription }; Guid guid; try { guid = this.SubmitScheduledJobToScheduler(job); OneTimeJobManager.Logger.DebugFormat("Job {0} scheduled", guid); } catch (Exception ex) { OneTimeJobManager.Logger.ErrorFormat("Failed to submit job: {0}", ex); OneTimeJobRawResult result = default(OneTimeJobRawResult); result.Success = false; result.Error = Resources.TestErrorJobFailed; result.ExceptionFromJob = ex; return(result); } TimeSpan timeSpan = jobDescription.Timeout.Add(this.jobTimeoutTolerance); OneTimeJobManager.PendingJobItem pendingJobItem = new OneTimeJobManager.PendingJobItem(); this.pendingJobs[guid] = pendingJobItem; if (this.JobStarted != null) { this.JobStarted(this, new OneTimeJobManager.JobStartedEventArgs(guid)); } OneTimeJobRawResult result2; if (pendingJobItem.WaitHandle.WaitOne(timeSpan)) { result2 = pendingJobItem.RawResult; } else { OneTimeJobManager.Logger.ErrorFormat("No result from job {0} received before timeout ({1})", guid, timeSpan); result2 = new OneTimeJobRawResult { Success = false, Error = Resources.TestErrorTimeout }; } this.pendingJobs.TryRemove(guid, out pendingJobItem); return(result2); }
// Token: 0x06000B94 RID: 2964 RVA: 0x0004923D File Offset: 0x0004743D public void Done(OneTimeJobRawResult result) { this.RawResult = result; this.waitHandle.Set(); }
public OneTimeJobRawResult ExecuteJob( JobDescription jobDescription, CredentialBase jobCredential = null) { if (this.listenerUri == string.Empty) { JobSchedulerEventServicev2.log.Error((object)"ListenerUri remains uninitialized"); return(new OneTimeJobRawResult() { Success = false, Error = Resources.get_TestErrorJobFailed() }); } if (jobCredential != null) { jobDescription.set_Credential(this.EncryptCredentials(jobCredential)); } if (jobDescription.get_SupportedRoles() == null) { jobDescription.set_SupportedRoles((PackageType)7); } ScheduledJob scheduledJob = new ScheduledJob(); scheduledJob.set_NotificationAddress(this.listenerUri); scheduledJob.set_State("CoreOneTimeJob"); scheduledJob.set_RunOnce(true); scheduledJob.set_IsOneShot(true); scheduledJob.set_Job(jobDescription); ScheduledJob job = scheduledJob; Guid scheduler; try { scheduler = this.SubmitScheduledJobToScheduler(job); OneTimeJobManager.Logger.DebugFormat("Job {0} scheduled", (object)scheduler); } catch (Exception ex) { OneTimeJobManager.Logger.ErrorFormat("Failed to submit job: {0}", (object)ex); OneTimeJobRawResult timeJobRawResult = new OneTimeJobRawResult(); timeJobRawResult.Success = false; timeJobRawResult.Error = Resources.get_TestErrorJobFailed(); timeJobRawResult.ExceptionFromJob = ex; timeJobRawResult = timeJobRawResult; return(timeJobRawResult); } TimeSpan timeout = jobDescription.get_Timeout().Add(this.jobTimeoutTolerance); OneTimeJobManager.PendingJobItem pendingJobItem = new OneTimeJobManager.PendingJobItem(); this.pendingJobs[scheduler] = pendingJobItem; if (this.JobStarted != null) { this.JobStarted((object)this, (EventArgs) new OneTimeJobManager.JobStartedEventArgs(scheduler)); } OneTimeJobRawResult timeJobRawResult1; if (pendingJobItem.WaitHandle.WaitOne(timeout)) { timeJobRawResult1 = pendingJobItem.RawResult; } else { OneTimeJobManager.Logger.ErrorFormat("No result from job {0} received before timeout ({1})", (object)scheduler, (object)timeout); timeJobRawResult1 = new OneTimeJobRawResult() { Success = false, Error = Resources.get_TestErrorTimeout() }; } this.pendingJobs.TryRemove(scheduler, out pendingJobItem); return(timeJobRawResult1); }