internal static uint GetDiscoveryMaxSearchQueueDepth(IRecipientSession recipientSession) { Unlimited <uint> discoveryMaxSearchQueueDepth = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxSearchQueueDepth; uint result = discoveryMaxSearchQueueDepth.IsUnlimited ? uint.MaxValue : discoveryMaxSearchQueueDepth.Value; ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(2802199869U, ref result); return(result); }
internal static uint GetDiscoverySearchTimeoutPeriod(IRecipientSession recipientSession) { Unlimited <uint> discoverySearchTimeoutPeriod = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoverySearchTimeoutPeriod; uint result = discoverySearchTimeoutPeriod.IsUnlimited ? uint.MaxValue : discoverySearchTimeoutPeriod.Value; ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(3573951805U, ref result); return(result); }
internal static uint GetDiscoveryMaxKeywordsPerPage(IRecipientSession recipientSession) { Unlimited <uint> discoveryMaxKeywordsPerPage = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxKeywordsPerPage; uint result = discoveryMaxKeywordsPerPage.IsUnlimited ? uint.MaxValue : discoveryMaxKeywordsPerPage.Value; ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(2516987197U, ref result); return(result); }
internal static uint GetDiscoveryMaxRefinerResults(IRecipientSession recipientSession) { Unlimited <uint> discoveryMaxRefinerResults = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxRefinerResults; uint result = discoveryMaxRefinerResults.IsUnlimited ? uint.MaxValue : discoveryMaxRefinerResults.Value; ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(4127599933U, ref result); return(result); }
internal static uint GetDiscoveryMaxConcurrency(IRecipientSession recipientSession) { Unlimited <uint> discoveryMaxConcurrency = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxConcurrency; uint result = discoveryMaxConcurrency.IsUnlimited ? uint.MaxValue : discoveryMaxConcurrency.Value; ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(4047908157U, ref result); return(result); }
internal static uint GetDiscoveryPreviewSearchResultsPageSize(IRecipientSession recipientSession) { Unlimited <uint> discoveryPreviewSearchResultsPageSize = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryPreviewSearchResultsPageSize; uint result = discoveryPreviewSearchResultsPageSize.IsUnlimited ? uint.MaxValue : discoveryPreviewSearchResultsPageSize.Value; ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(3590729021U, ref result); return(result); }
internal static uint GetDiscoveryMaxMailboxesForStatsSearch(IRecipientSession recipientSession) { Unlimited <uint> discoveryMaxStatsSearchMailboxes = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxStatsSearchMailboxes; uint result = discoveryMaxStatsSearchMailboxes.IsUnlimited ? uint.MaxValue : discoveryMaxStatsSearchMailboxes.Value; ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(2500209981U, ref result); return(result); }
internal static uint GetDiscoveryMaxKeywords(IRecipientSession recipientSession) { Unlimited <uint> discoveryMaxKeywords = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxKeywords; uint result = discoveryMaxKeywords.IsUnlimited ? uint.MaxValue : discoveryMaxKeywords.Value; ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(3511037245U, ref result); return(result); }
internal static uint GetDiscoveryMaxMailboxes(IRecipientSession recipientSession) { Unlimited <uint> unlimited = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxMailboxes.Value; uint result = unlimited.IsUnlimited ? uint.MaxValue : unlimited.Value; ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(2437295421U, ref result); return(result); }
internal void UpdateResults(MailboxSession targetMailbox, StoreId targetFolder) { int num = 0; ByteQuantifiedSize zero = ByteQuantifiedSize.Zero; SearchUtils.GetFolderItemsCountAndSize(targetMailbox, targetFolder, out num, out zero); this.OverallResultItems = (long)num; this.OverallResultSize = zero; }
internal static HashSet <StoreId> GetBccItemIds(MailboxSession mailbox, StoreId folderId) { HashSet <StoreId> bccItemIds; using (Folder folder = Folder.Bind(mailbox, folderId)) { bccItemIds = SearchUtils.GetBccItemIds(folder); } return(bccItemIds); }
internal StoreId[] GetFolderScope(MailboxSession mailbox) { StoreId defaultFolderId = mailbox.GetDefaultFolderId(DefaultFolderType.Root); StoreId defaultFolderId2 = mailbox.GetDefaultFolderId(DefaultFolderType.RecoverableItemsRoot); StoreId[] array; if (!this.SearchDumpsterOnly) { array = new StoreId[] { defaultFolderId }; } else { array = new StoreId[0]; } if ((this.SearchDumpsterOnly || this.SearchDumpster) && defaultFolderId2 != null) { QueryFilter queryFilter = DumpsterFolderHelper.ExcludeAuditFoldersFilter; if (this.excludePurgesFromDumpster && SearchUtils.LegalHoldEnabled(mailbox)) { queryFilter = new AndFilter(new QueryFilter[] { queryFilter, new ComparisonFilter(ComparisonOperator.NotEqual, StoreObjectSchema.DisplayName, "DiscoveryHolds") }); if (mailbox.COWSettings.HoldEnabled() && !mailbox.COWSettings.IsOnlyInPlaceHoldEnabled()) { queryFilter = new AndFilter(new QueryFilter[] { queryFilter, new ComparisonFilter(ComparisonOperator.NotEqual, StoreObjectSchema.DisplayName, "Purges") }); } } using (Folder folder = Folder.Bind(mailbox, defaultFolderId2)) { using (QueryResult queryResult = folder.FolderQuery(FolderQueryFlags.None, queryFilter, null, new PropertyDefinition[] { FolderSchema.Id })) { array = array.Concat(queryResult.Enumerator <StoreId>()).ToArray <StoreId>(); } } } return(array); }
internal static MailboxSession OpenMailboxSession(ADUser adUser, GenericIdentity actualExecutingIdentity) { ExchangePrincipal principal = ExchangePrincipal.FromADUser(adUser.OrganizationId.ToADSessionSettings(), adUser, RemotingOptions.AllowCrossSite); return(SearchUtils.OpenMailboxSession(principal, actualExecutingIdentity)); }
internal static void CheckDiscoveryBudget(ADUser arbitrationMailbox, IRecipientSession recipientSession) { uint discoveryMaxConcurrency = SearchUtils.GetDiscoveryMaxConcurrency(recipientSession); if (discoveryMaxConcurrency == 0U) { throw new SearchDisabledException(); } MailboxDataProvider mailboxDataProvider = new MailboxDataProvider(arbitrationMailbox, recipientSession); IEnumerable <SearchObject> enumerable = mailboxDataProvider.FindPaged <SearchObject>(null, null, false, null, 0); if (enumerable != null) { Dictionary <ADObjectId, ADUser> dictionary = new Dictionary <ADObjectId, ADUser>(); Dictionary <ADObjectId, string> dictionary2 = new Dictionary <ADObjectId, string>(); ADUser aduser = null; string text = null; SearchStatus searchStatus = null; uint num = 0U; try { foreach (SearchObject searchObject in from so in enumerable where (so.SearchStatus != null && so.SearchStatus.Status == SearchState.InProgress) || (so.SearchStatus != null && so.SearchStatus.Status == SearchState.EstimateInProgress) select so) { if (!dictionary.TryGetValue(searchObject.TargetMailbox, out aduser)) { aduser = (ADUser)recipientSession.Read(searchObject.TargetMailbox); if (aduser != null) { dictionary.Add(searchObject.TargetMailbox, aduser); } } if (aduser != null && !dictionary2.TryGetValue(searchObject.TargetMailbox, out text)) { text = ExchangePrincipal.FromADUser(recipientSession.SessionSettings, aduser, RemotingOptions.AllowCrossSite).MailboxInfo.Location.ServerFqdn; if (!string.IsNullOrEmpty(text)) { dictionary2.Add(searchObject.TargetMailbox, text); } } if (aduser != null && !string.IsNullOrEmpty(text)) { SearchId searchId = new SearchId(mailboxDataProvider.ADUser.Id.DistinguishedName, mailboxDataProvider.ADUser.Id.ObjectGuid, searchObject.Id.Guid.ToString()); try { using (MailboxSearchClient mailboxSearchClient = new MailboxSearchClient(text)) { searchStatus = mailboxSearchClient.GetStatus(searchId); } } catch (RpcConnectionException arg) { SearchUtils.Tracer.TraceError <RpcConnectionException>(0L, "SearchUtils.CheckDiscoveryBudget error querying for status: {0}", arg); continue; } catch (RpcException arg2) { SearchUtils.Tracer.TraceError <RpcException>(0L, "SearchUtils.CheckDiscoveryBudget error querying for status: {0}", arg2); continue; } catch (SearchServerException arg3) { SearchUtils.Tracer.TraceError <SearchServerException>(0L, "SearchUtils.CheckDiscoveryBudget error querying for status: {0}", arg3); continue; } if (searchStatus != null && (searchStatus.Status == 0 || searchStatus.Status == 6)) { num += 1U; } } if (num >= discoveryMaxConcurrency) { throw new SearchOverBudgetException((int)discoveryMaxConcurrency); } } } finally { dictionary.Clear(); dictionary2.Clear(); } } }
internal static bool DiscoveryEnabled(IRecipientSession recipientSession) { return(SearchUtils.GetDiscoveryMaxConcurrency(recipientSession) > 0U); }