public static IDisposable SetTestHook(ComplianceBindingType bindingType, IComplianceTaskCreator testHook) { if (bindingType == ComplianceBindingType.ExchangeBinding) { return(ComplianceTaskCreatorFactory.exchangeBindingTaskCreatorInstance.SetTestHook(testHook)); } throw new NotImplementedException(); }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); if (this.DataObject == null) { return; } if (base.ExchangeRunspaceConfig == null) { base.WriteError(new ComplianceJobTaskException(Strings.UnableToDetermineExecutingUser), ErrorCategory.InvalidOperation, null); } TDataObject dataObject = this.DataObject; switch (dataObject.JobStatus) { case ComplianceJobStatus.Starting: case ComplianceJobStatus.InProgress: { TDataObject dataObject2 = this.DataObject; base.WriteError(new ComplianceJobTaskException(Strings.CannotStartRunningJob(dataObject2.Name)), ErrorCategory.InvalidOperation, this.DataObject); break; } } TDataObject dataObject3 = this.DataObject; dataObject3.Resume = this.Resume; TDataObject dataObject4 = this.DataObject; dataObject4.RunBy = ((ADObjectId)base.ExchangeRunspaceConfig.ExecutingUserIdentity).Name; TDataObject dataObject5 = this.DataObject; dataObject5.JobStartTime = DateTime.UtcNow; TDataObject dataObject6 = this.DataObject; dataObject6.JobRunId = CombGuidGenerator.NewGuid(); TDataObject dataObject7 = this.DataObject; dataObject7.JobStatus = ComplianceJobStatus.Starting; base.DataSession.Save(this.DataObject); TDataObject dataObject8 = this.DataObject; MultiValuedProperty <string> exchangeBindings = dataObject8.ExchangeBindings; if (exchangeBindings != null && exchangeBindings.Count > 0) { try { Dictionary <string, ComplianceBindingErrorType> invalidBindings = new Dictionary <string, ComplianceBindingErrorType>(); TDataObject dataObject9 = this.DataObject; dataObject9.Bindings[ComplianceBindingType.ExchangeBinding].JobMaster = base.ExchangeRunspaceConfig.IdentityName; TDataObject dataObject10 = this.DataObject; dataObject10.Bindings[ComplianceBindingType.ExchangeBinding].JobStartTime = DateTime.UtcNow; base.DataSession.Save(this.DataObject); ComplianceMessage item = this.CreateStartJobMessage(); InterExchangeWorkloadClient interExchangeWorkloadClient = new InterExchangeWorkloadClient(); Task <bool[]> task = interExchangeWorkloadClient.SendMessageAsync(new List <ComplianceMessage> { item }); IComplianceTaskCreator instance = ComplianceTaskCreatorFactory.GetInstance(ComplianceBindingType.ExchangeBinding); IEnumerable <CompositeTask> enumerable = instance.CreateTasks(base.DataSession, this.DataObject, CreateTaskOptions.None, delegate(string invalidBinding, ComplianceBindingErrorType errorType) { invalidBindings.Add(invalidBinding, errorType); }); int num = 0; foreach (CompositeTask compositeTask in enumerable) { num++; int percentCompleted = (num > 99) ? 99 : num; base.WriteProgress(Strings.ComplianceSearchCreateTaskActivity, Strings.ComplianceSearchTasksCreated(num), percentCompleted); } TimeSpan timeout = TimeSpan.FromSeconds(5.0); bool flag = true; for (int i = 0; i < 6; i++) { if (System.Threading.Tasks.Task.WaitAll(new System.Threading.Tasks.Task[] { task }, timeout)) { flag = false; break; } base.WriteVerbose(Strings.ComplianceSearchInitializingMessage); } if (flag) { TDataObject dataObject11 = this.DataObject; dataObject11.JobStatus = ComplianceJobStatus.Failed; base.ThrowTerminatingError(new ComplianceJobTaskException(Strings.ComplianceSearchTimeoutError), ErrorCategory.ConnectionError, this.DataObject); } else if (!task.Result[0]) { TDataObject dataObject12 = this.DataObject; dataObject12.JobStatus = ComplianceJobStatus.Failed; base.ThrowTerminatingError(new ComplianceJobTaskException(Strings.ComplianceSearchSendStartMessageError("Exchange")), ErrorCategory.ConnectionError, this.DataObject); } this.CreateWarningMessageForInvalidBindings(invalidBindings); TDataObject dataObject13 = this.DataObject; dataObject13.Bindings[ComplianceBindingType.ExchangeBinding].JobStatus = ComplianceJobStatus.InProgress; ComplianceJobProvider complianceJobProvider = (ComplianceJobProvider)base.DataSession; TDataObject dataObject14 = this.DataObject; complianceJobProvider.UpdateWorkloadResults(dataObject14.JobRunId, null, ComplianceBindingType.ExchangeBinding, ComplianceJobStatus.InProgress); } catch (Exception ex) { TDataObject dataObject15 = this.DataObject; dataObject15.JobStatus = ComplianceJobStatus.Failed; base.DataSession.Save(this.DataObject); throw ex; } } TDataObject dataObject16 = this.DataObject; dataObject16.Bindings[ComplianceBindingType.PublicFolderBinding].JobStatus = ComplianceJobStatus.Succeeded; ComplianceJobProvider complianceJobProvider2 = (ComplianceJobProvider)base.DataSession; TDataObject dataObject17 = this.DataObject; complianceJobProvider2.UpdateWorkloadResults(dataObject17.JobRunId, null, ComplianceBindingType.PublicFolderBinding, ComplianceJobStatus.Succeeded); TDataObject dataObject18 = this.DataObject; dataObject18.Bindings[ComplianceBindingType.SharePointBinding].JobStatus = ComplianceJobStatus.Succeeded; ComplianceJobProvider complianceJobProvider3 = (ComplianceJobProvider)base.DataSession; TDataObject dataObject19 = this.DataObject; complianceJobProvider3.UpdateWorkloadResults(dataObject19.JobRunId, null, ComplianceBindingType.SharePointBinding, ComplianceJobStatus.Succeeded); TaskLogger.LogExit(); }