// Token: 0x06000053 RID: 83 RVA: 0x00003598 File Offset: 0x00001798 protected override Task ReceiveMessageInternal(ComplianceMessage message) { TaskScheduler @default = TaskScheduler.Default; FaultDefinition faultDefinition; Registry.Instance.TryGetInstance <TaskScheduler>(RegistryComponent.TaskDistribution, TaskDistributionComponent.ResourceScheduler, out @default, out faultDefinition, "ReceiveMessageInternal", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Dataflow\\WorkReceiver.cs", 77); TransformBlock <ComplianceMessage, ComplianceMessage> dataflowBlock = this.workBlock.GetDataflowBlock(new ExecutionDataflowBlockOptions { TaskScheduler = @default, MaxDegreeOfParallelism = -1 }); TransformBlock <ComplianceMessage, ComplianceMessage> dataflowBlock2 = this.recordBlock.GetDataflowBlock(null); TransformBlock <ComplianceMessage, object> dataflowBlock3 = this.returnBlock.GetDataflowBlock(null); dataflowBlock.LinkTo(dataflowBlock2, BlockBase <ComplianceMessage, ComplianceMessage> .DefaultLinkOptions); dataflowBlock2.LinkTo(dataflowBlock3, BlockBase <ComplianceMessage, ComplianceMessage> .DefaultLinkOptions); if (DataflowBlock.Post <ComplianceMessage>(dataflowBlock, message)) { dataflowBlock.Complete(); return(dataflowBlock3.Completion); } return(null); }
public WorkPayload DoWork(ComplianceMessage target, WorkPayload payload) { SearchWorkDefinition searchWorkDefinition; FaultDefinition faultDefinition; ISearchResultsProvider searchResultsProvider; if (ComplianceSerializer.TryDeserialize <SearchWorkDefinition>(SearchWorkDefinition.Description, payload.WorkDefinition, out searchWorkDefinition, out faultDefinition, "DoWork", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\SearchApplicationPlugin.cs", 40) && Registry.Instance.TryGetInstance <ISearchResultsProvider>(RegistryComponent.EDiscovery, EDiscoveryComponent.SearchResultProvider, out searchResultsProvider, out faultDefinition, "DoWork", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\SearchApplicationPlugin.cs", 42)) { SearchResult searchResult = searchResultsProvider.PerformSearch(target, searchWorkDefinition); searchResult.PageSize = searchWorkDefinition.DetailCount; return(new WorkPayload { PayloadId = payload.PayloadId, WorkDefinitionType = WorkDefinitionType.EDiscovery, WorkDefinition = ComplianceSerializer.Serialize <SearchResult>(SearchResult.Description, searchResult) }); } if (faultDefinition != null) { ExceptionHandler.FaultMessage(target, faultDefinition, true); } return(null); }
public void RecordResult(ComplianceMessage message, Func <ResultBase, ResultBase> commitFunction) { IncomingEntry incomingEntry = this.GetIncomingEntry(message, true); incomingEntry.RecordResult(message, commitFunction); }
public static bool IsToDriver(ComplianceMessage message) { return(message.MessageSource != null && message.MessageTarget.TargetType == Target.Type.Driver); }
public WorkPayload Preprocess(ComplianceMessage target, WorkPayload payload) { return(payload); }
public WorkPayload DoWork(ComplianceMessage target, WorkPayload payload) { return(payload); }
// Token: 0x0600004B RID: 75 protected abstract Task <ComplianceMessage> ProcessMessageInternal(ComplianceMessage message);
public void RecordResult(ComplianceMessage message, Func <ResultBase, ResultBase> commitFunction) { RoutingCache.Instance.RecordResult(message, commitFunction); }
public void ProcessedMessage(ComplianceMessage message) { MessageLogger.Instance.LogMessageProcessed(message); RoutingCache.Instance.ProcessedMessage(message); }
public void LogMessageDispatched(ComplianceMessage message) { message.ProtocolContext.DispatchEndTime = new DateTime?(DateTime.UtcNow); ProtocolContext.MessageDirection direction = message.ProtocolContext.Direction; }
public SearchResult PerformSearch(ComplianceMessage target, SearchWorkDefinition definition) { string query = definition.Query; SearchResult result = new SearchResult(); CultureInfo culture; FaultDefinition faultDefinition; ExceptionHandler.Parser.TryRun(delegate { if (string.IsNullOrEmpty(target.Culture)) { culture = CultureInfo.InvariantCulture; } else { culture = CultureInfo.GetCultureInfo(target.Culture); } AdditionalParameters additionalParameters = new AdditionalParameters { Refiners = new string[] { FastIndexSystemSchema.Size.Name } }; if (query != null) { Guid mailboxGuid = target.MessageTarget.Mailbox; Guid database = target.MessageTarget.Database; IEnumerable <KeyValuePair <PagingImsFlowExecutor.QueryExecutionContext, SearchResultItem[]> > pages = null; string flowName = FlowDescriptor.GetImsFlowDescriptor(FastLocalSearchResultsProvider.SearchConfig, FastIndexVersion.GetIndexSystemName(database)).DisplayName; if (ExceptionHandler.Proxy.TryRun(delegate { pages = FastLocalSearchResultsProvider.FlowExecutor.Execute(flowName, mailboxGuid, Guid.NewGuid(), query, 0L, culture, additionalParameters, Math.Min(FastLocalSearchResultsProvider.SearchConfig.FastQueryResultTrimHits, 1), null); }, TimeSpan.FromMinutes(1.0), out faultDefinition, target, new Action <ExceptionHandler.ExceptionData>(this.ProxyExceptionHandler), default(CancellationToken), null, "PerformSearch", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\FastLocalSearchResultsProvider.cs", 213)) { foreach (KeyValuePair <PagingImsFlowExecutor.QueryExecutionContext, SearchResultItem[]> keyValuePair in pages) { PagingImsFlowExecutor.QueryExecutionContext key = keyValuePair.Key; SearchResultItem[] value = keyValuePair.Value; ByteQuantifiedSize byteQuantifiedSize = default(ByteQuantifiedSize); long count = FastLocalSearchResultsProvider.FlowExecutor.ReadHitCount(key); IEnumerable <RefinerResult> source = FastLocalSearchResultsProvider.FlowExecutor.ReadRefiners(key); RefinerResult refinerResult = source.FirstOrDefault((RefinerResult t) => t.Name == FastIndexSystemSchema.Size.Name); if (refinerResult != null) { byteQuantifiedSize = new ByteQuantifiedSize((ulong)refinerResult.Sum); } result = new SearchResult(); result.UpdateTotalSize((long)byteQuantifiedSize.ToMB()); result.UpdateTotalCount(count); result.Results.Add(new SearchResult.TargetSearchResult { Target = target.MessageTarget, Size = result.TotalSize, Count = result.TotalCount }); } } } }, TimeSpan.FromMinutes(1.0), out faultDefinition, target, null, default(CancellationToken), null, "PerformSearch", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\FastLocalSearchResultsProvider.cs", 188); if (faultDefinition != null) { ExceptionHandler.FaultMessage(target, faultDefinition, true); } return(result); }
// Token: 0x0600002C RID: 44 RVA: 0x00003848 File Offset: 0x00001A48 public virtual bool TryRun(Action code, TimeSpan duration, out FaultDefinition faultDefinition, ComplianceMessage context = null, Action <ExceptionHandler.ExceptionData> exceptionHandler = null, CancellationToken cancelToken = default(CancellationToken), double[] retrySchedule = null, [CallerMemberName] string callerMember = null, [CallerFilePath] string callerFilePath = null, [CallerLineNumber] int callerLineNumber = 0) { bool result2; try { if (retrySchedule == null) { retrySchedule = new double[] { 10.0, 20.0, 30.0 }; } int num = 0; long elapsedMilliseconds = ExceptionHandler.watch.ElapsedMilliseconds; ExceptionHandler.ExceptionData args = new ExceptionHandler.ExceptionData { Exception = null, RetryCount = num, ShouldRetry = false, Context = context }; for (;;) { args.RetryCount = num; bool result = false; ExWatson.SendReportOnUnhandledException(delegate() { result = this.TryRunInternal(code, ref args); }); if (result) { break; } if (exceptionHandler != null) { exceptionHandler(args); } if (!args.ShouldRetry) { goto IL_17D; } int num2 = (int)(duration.TotalMilliseconds * (retrySchedule[(num >= retrySchedule.Length) ? (retrySchedule.Length - 1) : num] / 100.0)); if (num2 > 0) { faultDefinition = FaultDefinition.FromException(args.Exception, true, args.ShouldRetry, callerMember, callerFilePath, callerLineNumber); ExceptionHandler.FaultMessage(context, faultDefinition, false); if (cancelToken.WaitHandle.WaitOne(num2)) { goto IL_17D; } } num++; if ((double)(ExceptionHandler.watch.ElapsedMilliseconds - elapsedMilliseconds) >= duration.TotalMilliseconds || elapsedMilliseconds == ExceptionHandler.watch.ElapsedMilliseconds) { goto IL_17D; } } faultDefinition = null; return(true); IL_17D: faultDefinition = new FaultDefinition(); FaultRecord faultRecord = new FaultRecord(); faultDefinition.Faults.TryAdd(faultRecord); faultRecord.Data["RC"] = args.RetryCount.ToString(); faultRecord.Data["TEX"] = args.ShouldRetry.ToString(); faultRecord.Data["EFILE"] = callerFilePath; faultRecord.Data["EFUNC"] = callerMember; faultRecord.Data["ELINE"] = callerLineNumber.ToString(); if (args.Exception != null) { faultRecord.Data["EX"] = args.Exception.ToString(); LocalizedException ex = args.Exception as LocalizedException; if (ex != null) { faultRecord.Data["UM"] = ex.Message; } } faultDefinition = FaultDefinition.FromException(args.Exception, true, args.ShouldRetry, callerMember, callerFilePath, callerLineNumber); ExceptionHandler.FaultMessage(context, faultDefinition, false); result2 = false; } catch (Exception error) { faultDefinition = FaultDefinition.FromException(error, true, false, callerMember, callerFilePath, callerLineNumber); ExceptionHandler.FaultMessage(context, faultDefinition, true); throw; } return(result2); }
// Token: 0x0600002B RID: 43 RVA: 0x000037D8 File Offset: 0x000019D8 public static FaultDefinition GetFaultDefinition(ComplianceMessage message) { return(message.ProtocolContext.FaultDefinition); }
// Token: 0x0600002A RID: 42 RVA: 0x000037B4 File Offset: 0x000019B4 public static bool IsFaulted(ComplianceMessage message) { return(message.ProtocolContext.FaultDefinition != null && message.ProtocolContext.FaultDefinition.IsFatalFailure); }
protected abstract Task ReceiveMessageInternal(ComplianceMessage message);
public void ReturnMessage(ComplianceMessage message) { RoutingCache.Instance.ReturnMessage(message); }
public void LogMessageDispatching(ComplianceMessage message) { message.ProtocolContext.DispatchStartTime = new DateTime?(DateTime.UtcNow); }
public void DispatchedMessage(ComplianceMessage message) { MessageLogger.Instance.LogMessageDispatched(message); RoutingCache.Instance.DispatchedMessage(message); }
// Token: 0x06000003 RID: 3 public abstract Task <ComplianceMessage> GetResponseAsync(ComplianceMessage message);
public void SendMessage(ComplianceMessage message) { RoutingCache.Instance.SendMessage(message); }
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(); }