// Token: 0x0600003D RID: 61 RVA: 0x00002FCC File Offset: 0x000011CC public override ComplianceMessage Process(ComplianceMessage input) { StatusPayload statusPayload = new StatusPayload(); if (input == null) { return(new ComplianceMessage { Payload = ComplianceSerializer.Serialize <StatusPayload>(StatusPayload.Description, statusPayload) }); } statusPayload.QueuedMessages.Add(input.MessageId); WorkPayload workPayload; FaultDefinition faultDefinition; OrganizationId orgId; if (ComplianceSerializer.TryDeserialize <WorkPayload>(WorkPayload.Description, input.Payload, out workPayload, out faultDefinition, "Process", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Blocks\\StoreResultsBlock.cs", 47) && OrganizationId.TryCreateFromBytes(input.TenantId, Encoding.UTF8, out orgId)) { Guid correlationId = input.CorrelationId; ComplianceJobProvider complianceJobProvider = new ComplianceJobProvider(orgId); ComplianceJobStatus status = ComplianceJobStatus.StatusUnknown; switch (workPayload.WorkDefinitionType) { case WorkDefinitionType.EDiscovery: status = ComplianceJobStatus.Succeeded; break; case WorkDefinitionType.Fault: status = ComplianceJobStatus.Failed; break; } complianceJobProvider.UpdateWorkloadResults(correlationId, input.Payload, ComplianceBindingType.ExchangeBinding, status); } return(new ComplianceMessage { Payload = ComplianceSerializer.Serialize <StatusPayload>(StatusPayload.Description, statusPayload) }); }
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(); }