Esempio n. 1
0
        public IEnumerable <T> GetAllPayloads <T>(ComplianceSerializationDescription <T> description, byte[] blob, out FaultDefinition faultDefinition) where T : Payload, new()
        {
            T t;

            if (ComplianceSerializer.TryDeserialize <T>(description, blob, out t, out faultDefinition, "GetAllPayloads", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Payload\\PayloadRetriever.cs", 88))
            {
                return(new T[]
                {
                    t
                });
            }
            PayloadReference reference;

            if (ComplianceSerializer.TryDeserialize <PayloadReference>(PayloadReference.Description, blob, out reference, out faultDefinition, "GetAllPayloads", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Payload\\PayloadRetriever.cs", 95))
            {
                PayloadRetriever.DriverRetriever retriever = new PayloadRetriever.DriverRetriever();
                IEnumerable <T> payloads = null;
                if (ExceptionHandler.Proxy.TryRun(delegate
                {
                    payloads = retriever.RetrievePayload <T>(description, reference, int.MaxValue);
                }, TaskDistributionSettings.DataLookupTime, out faultDefinition, null, null, default(CancellationToken), null, "GetAllPayloads", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Payload\\PayloadRetriever.cs", 99))
                {
                    return(payloads);
                }
                faultDefinition = retriever.FaultDefinition;
            }
            return(null);
        }
Esempio n. 2
0
        // Token: 0x0600011B RID: 283 RVA: 0x00006E0C File Offset: 0x0000500C
        private void UpdateFailureResults(WorkPayload workPayload)
        {
            FaultDefinition results;
            FaultDefinition faultDefinition;

            if (ComplianceSerializer.TryDeserialize <FaultDefinition>(FaultDefinition.Description, workPayload.WorkDefinition, out results, out faultDefinition, "UpdateFailureResults", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionCommon\\ObjectModel\\ComplianceSearch.cs", 429))
            {
                this.UpdateErrors(results);
            }
        }
Esempio n. 3
0
            public IEnumerable <T> RetrievePayload <T>(ComplianceSerializationDescription <T> description, PayloadReference reference, int count = 2147483647) where T : Payload, new()
            {
                ComplianceMessage message = new ComplianceMessage
                {
                    CorrelationId         = Guid.NewGuid(),
                    ComplianceMessageType = ComplianceMessageType.RetrieveRequest,
                    WorkDefinitionType    = WorkDefinitionType.Unrecognized
                };
                bool             isComplete = false;
                string           bookmark   = null;
                DriverClientBase driverClient;

                if (Registry.Instance.TryGetInstance <DriverClientBase>(RegistryComponent.Client, ClientType.DriverClient, out driverClient, out this.faultDefinition, "RetrievePayload", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Payload\\PayloadRetriever.cs", 161))
                {
                    for (;;)
                    {
                        reference.Bookmark = bookmark;
                        reference.Count    = count;
                        message.Payload    = ComplianceSerializer.Serialize <PayloadReference>(PayloadReference.Description, reference);
                        Task <ComplianceMessage> payloadTask = driverClient.GetResponseAsync(message);
                        if (!payloadTask.Wait(TaskDistributionSettings.DataLookupTime))
                        {
                            break;
                        }
                        ComplianceMessage payloadResponse = payloadTask.Result;
                        RetrievedPayload  retrievedPayload;
                        if (ComplianceSerializer.TryDeserialize <RetrievedPayload>(RetrievedPayload.Description, payloadResponse.Payload, out retrievedPayload, out this.faultDefinition, "RetrievePayload", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Payload\\PayloadRetriever.cs", 174))
                        {
                            bookmark   = retrievedPayload.Bookmark;
                            isComplete = retrievedPayload.IsComplete;
                            foreach (byte[] childBlob in retrievedPayload.Children)
                            {
                                T payload;
                                if (ComplianceSerializer.TryDeserialize <T>(description, childBlob, out payload, out this.faultDefinition, "RetrievePayload", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Payload\\PayloadRetriever.cs", 181))
                                {
                                    yield return(payload);
                                }
                            }
                        }
                        if (count <= 1)
                        {
                            goto IL_236;
                        }
                        if (isComplete)
                        {
                            goto Block_5;
                        }
                    }
                    throw new TimeoutException();
Block_5:
IL_236:
                    yield break;
                }
                throw new InvalidOperationException();
            }
        // Token: 0x06000037 RID: 55 RVA: 0x00002BD0 File Offset: 0x00000DD0
        public override ComplianceMessage Process(ComplianceMessage input)
        {
            ComplianceMessage complianceMessage = new ComplianceMessage
            {
                CorrelationId = input.CorrelationId,
                TenantId      = input.TenantId,
                MessageId     = default(Guid).ToString()
            };
            FaultDefinition  faultDefinition = null;
            RetrievedPayload payload         = new RetrievedPayload();
            PayloadReference payloadReference;

            if (!ComplianceSerializer.TryDeserialize <PayloadReference>(PayloadReference.Description, input.Payload, out payloadReference, out faultDefinition, "Process", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Blocks\\RetrievePayloadBlock.cs", 43))
            {
                throw new BadStructureFormatException(string.Format("Problem in deserializing the payload reference:{0}", input.ComplianceMessageType));
            }
            OrganizationId organizationId;

            if (!OrganizationId.TryCreateFromBytes(input.TenantId, Encoding.UTF8, out organizationId))
            {
                throw new ArgumentException(string.Format("Problem in creating Organization Id from the tenant id:{0}", input.ComplianceMessageType));
            }
            Guid         jobRunId;
            int          taskId;
            PayloadLevel payloadLevel;

            if (PayloadHelper.TryReadFromPayloadReference(payloadReference, out jobRunId, out taskId, out payloadLevel))
            {
                switch (payloadLevel)
                {
                case PayloadLevel.Job:
                {
                    int taskId2;
                    if (!int.TryParse(payloadReference.Bookmark, out taskId2))
                    {
                        taskId2 = -1;
                    }
                    payload = this.RetrieveJobDistributionPayload(organizationId, jobRunId, taskId2);
                    break;
                }

                case PayloadLevel.Task:
                    payload = this.RetrieveTaskDistributionPayload(organizationId, jobRunId, taskId);
                    break;
                }
            }
            complianceMessage.Payload = payload;
            return(complianceMessage);
        }
Esempio n. 5
0
        // Token: 0x0600000D RID: 13 RVA: 0x00002AEC File Offset: 0x00000CEC
        public virtual async Task <bool[]> SendMessageAsync(IEnumerable <ComplianceMessage> messages)
        {
            IEnumerable <ComplianceMessage> responses = await this.SendMessageAsyncInternal(messages);

            foreach (ComplianceMessage complianceMessage in responses)
            {
                FaultDefinition faultDefinition;
                StatusPayload   status;
                if (ComplianceSerializer.TryDeserialize <StatusPayload>(StatusPayload.Description, complianceMessage.Payload, out status, out faultDefinition, "SendMessageAsync", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionCommon\\Client\\WorkloadClientBase.cs", 45))
                {
                    return((from t in messages
                            select status.QueuedMessages.Contains(t.MessageId)).ToArray <bool>());
                }
            }
            return(new bool[1]);
        }
        public ResultBase RecordResult(ResultBase existing, WorkPayload addition)
        {
            SearchResult searchResult  = new SearchResult();
            SearchResult searchResult2 = existing as SearchResult;

            if (addition != null)
            {
                FaultDefinition faultDefinition;
                if (addition.WorkDefinitionType == WorkDefinitionType.Fault)
                {
                    FaultDefinition faultDefinition2;
                    if (!ComplianceSerializer.TryDeserialize <FaultDefinition>(FaultDefinition.Description, addition.WorkDefinition, out faultDefinition, out faultDefinition2, "RecordResult", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\SearchApplicationPlugin.cs", 82))
                    {
                        faultDefinition = faultDefinition2;
                    }
                }
                else if (ComplianceSerializer.TryDeserialize <SearchResult>(SearchResult.Description, addition.WorkDefinition, out searchResult, out faultDefinition, "RecordResult", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\SearchApplicationPlugin.cs", 87))
                {
                    if (searchResult2 == null)
                    {
                        searchResult2 = searchResult;
                    }
                    else
                    {
                        searchResult2.UpdateTotalSize(searchResult.TotalSize);
                        searchResult2.UpdateTotalCount(searchResult.TotalCount);
                        searchResult2.MergeFaults(searchResult);
                    }
                }
                if (faultDefinition != null)
                {
                    if (searchResult2 == null)
                    {
                        searchResult2 = new SearchResult();
                    }
                    searchResult2.MergeFaults(faultDefinition);
                }
            }
            return(searchResult2);
        }
        public WorkPayload Preprocess(ComplianceMessage target, WorkPayload payload)
        {
            SearchWorkDefinition   searchWorkDefinition;
            FaultDefinition        faultDefinition;
            ISearchResultsProvider searchResultsProvider;

            if (ComplianceSerializer.TryDeserialize <SearchWorkDefinition>(SearchWorkDefinition.Description, payload.WorkDefinition, out searchWorkDefinition, out faultDefinition, "Preprocess", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\SearchApplicationPlugin.cs", 128) && Registry.Instance.TryGetInstance <ISearchResultsProvider>(RegistryComponent.EDiscovery, EDiscoveryComponent.SearchResultProvider, out searchResultsProvider, out faultDefinition, "Preprocess", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\ApplicationPlugins\\EDiscovery\\SearchApplicationPlugin.cs", 130))
            {
                searchWorkDefinition = searchResultsProvider.ParseSearch(target, searchWorkDefinition);
                return(new WorkPayload
                {
                    PayloadId = payload.PayloadId,
                    WorkDefinitionType = WorkDefinitionType.EDiscovery,
                    WorkDefinition = ComplianceSerializer.Serialize <SearchWorkDefinition>(SearchWorkDefinition.Description, searchWorkDefinition)
                });
            }
            if (faultDefinition != null)
            {
                ExceptionHandler.FaultMessage(target, faultDefinition, true);
            }
            return(null);
        }
Esempio n. 8
0
 public async Task <byte[][]> ReceiveMessagesAsync(byte[][] messageBlobs)
 {
     return(await Task.Run <byte[][]>(delegate()
     {
         StatusPayload statusPayload = new StatusPayload();
         foreach (byte[] blob in messageBlobs)
         {
             ComplianceMessage complianceMessage;
             FaultDefinition fault;
             if (ComplianceSerializer.TryDeserialize <ComplianceMessage>(ComplianceMessage.Description, blob, out complianceMessage, out fault, "ReceiveMessagesAsync", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Endpoint\\MessageReceiver.cs", 56))
             {
                 MessageReceiverBase messageReceiverBase;
                 if (Registry.Instance.TryGetInstance <MessageReceiverBase>(RegistryComponent.MessageReceiver, complianceMessage.ComplianceMessageType, out messageReceiverBase, out fault, "ReceiveMessagesAsync", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Endpoint\\MessageReceiver.cs", 58))
                 {
                     if (messageReceiverBase.ReceiveMessage(complianceMessage))
                     {
                         statusPayload.QueuedMessages.Add(complianceMessage.MessageId);
                     }
                 }
                 else if (complianceMessage.ComplianceMessageType == ComplianceMessageType.EchoRequest)
                 {
                     statusPayload.QueuedMessages.Add(complianceMessage.MessageId);
                 }
                 else
                 {
                     ExceptionHandler.FaultMessage(complianceMessage, fault, true);
                 }
             }
         }
         return new byte[][]
         {
             ComplianceSerializer.Serialize <ComplianceMessage>(ComplianceMessage.Description, new ComplianceMessage
             {
                 ComplianceMessageType = ComplianceMessageType.Status,
                 Payload = ComplianceSerializer.Serialize <StatusPayload>(StatusPayload.Description, statusPayload)
             })
         };
     }));
 }
Esempio n. 9
0
        public async Task <byte[]> ProcessMessageAsync(byte[] message)
        {
            ComplianceMessage    response = null;
            ComplianceMessage    request;
            FaultDefinition      faultDefinition;
            MessageProcessorBase messageProcessor;

            if (ComplianceSerializer.TryDeserialize <ComplianceMessage>(ComplianceMessage.Description, message, out request, out faultDefinition, "ProcessMessageAsync", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Endpoint\\MessageProcessor.cs", 49) && Registry.Instance.TryGetInstance <MessageProcessorBase>(RegistryComponent.MessageProcessor, request.ComplianceMessageType, out messageProcessor, out faultDefinition, "ProcessMessageAsync", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Endpoint\\MessageProcessor.cs", 51))
            {
                MessageLogger.Instance.LogMessageReceived(request);
                response = await messageProcessor.ProcessMessage(request);
            }
            if (faultDefinition != null)
            {
                response = new ComplianceMessage
                {
                    WorkDefinitionType = WorkDefinitionType.Fault,
                    Payload            = faultDefinition.ToPayload()
                };
            }
            return(ComplianceSerializer.Serialize <ComplianceMessage>(ComplianceMessage.Description, response));
        }
Esempio n. 10
0
        // 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)
            });
        }
Esempio n. 11
0
        public bool TryGetPayload <T>(ComplianceSerializationDescription <T> description, byte[] blob, out T payload, out FaultDefinition faultDefinition) where T : Payload, new()
        {
            if (ComplianceSerializer.TryDeserialize <T>(description, blob, out payload, out faultDefinition, "TryGetPayload", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Payload\\PayloadRetriever.cs", 39))
            {
                return(true);
            }
            PayloadReference reference;

            if (ComplianceSerializer.TryDeserialize <PayloadReference>(PayloadReference.Description, blob, out reference, out faultDefinition, "TryGetPayload", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Payload\\PayloadRetriever.cs", 48))
            {
                PayloadRetriever.DriverRetriever retriever = new PayloadRetriever.DriverRetriever();
                T currentPayload = default(T);
                if (ExceptionHandler.Proxy.TryRun(delegate
                {
                    currentPayload = retriever.RetrievePayload <T>(description, reference, int.MaxValue).FirstOrDefault <T>();
                }, TaskDistributionSettings.DataLookupTime, out faultDefinition, null, null, default(CancellationToken), null, "TryGetPayload", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionFabric\\Payload\\PayloadRetriever.cs", 53))
                {
                    payload = currentPayload;
                    return(true);
                }
                faultDefinition = retriever.FaultDefinition;
            }
            return(false);
        }
Esempio n. 12
0
        // Token: 0x06000119 RID: 281 RVA: 0x00006C1C File Offset: 0x00004E1C
        internal override void UpdateJobResults()
        {
            long num  = 0L;
            long num2 = 0L;

            foreach (KeyValuePair <ComplianceBindingType, ComplianceBinding> keyValuePair in base.Bindings)
            {
                WorkPayload     workPayload;
                FaultDefinition faultDefinition;
                if (keyValuePair.Value.JobResults != null && keyValuePair.Value.JobResults.Length != 0 && ComplianceSerializer.TryDeserialize <WorkPayload>(WorkPayload.Description, keyValuePair.Value.JobResults, out workPayload, out faultDefinition, "UpdateJobResults", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\TaskDistributionSystem\\TaskDistributionCommon\\ObjectModel\\ComplianceSearch.cs", 325))
                {
                    switch (workPayload.WorkDefinitionType)
                    {
                    case WorkDefinitionType.EDiscovery:
                    {
                        SearchResult searchResult = ComplianceSerializer.DeSerialize <SearchResult>(SearchResult.Description, workPayload.WorkDefinition);
                        if (searchResult != null)
                        {
                            num  += searchResult.TotalCount;
                            num2 += searchResult.TotalSize;
                            if (searchResult.Results != null && searchResult.Results.Count != 0)
                            {
                                foreach (SearchResult.TargetSearchResult item in searchResult.Results)
                                {
                                    this.successfulResults.Add(item);
                                }
                            }
                        }
                        break;
                    }

                    case WorkDefinitionType.Fault:
                        this.UpdateFailureResults(workPayload);
                        break;
                    }
                }
            }
            this.ResultNumber = num;
            this.ResultSize   = num2;
        }