// Token: 0x06001359 RID: 4953 RVA: 0x00077AAC File Offset: 0x00075CAC private static bool GetSearchFolderData(UserContext userContext, out int searchFolderItemCount, out SearchState searchState, out bool isRemoteSession) { searchFolderItemCount = -1; searchState = SearchState.None; isRemoteSession = false; bool result = false; if (userContext.SearchFolderId != null) { try { using (SearchFolder searchFolder = SearchFolder.Bind(userContext.SearchFolderId.GetSession(userContext), userContext.SearchFolderId.StoreObjectId, SearchPerformanceData.searchFolderProperties)) { object obj = searchFolder.TryGetProperty(FolderSchema.SearchFolderItemCount); if (obj is int) { searchFolderItemCount = (int)obj; } searchState = searchFolder.GetSearchCriteria().SearchState; isRemoteSession = searchFolder.Session.IsRemote; } result = true; } catch (ObjectNotFoundException) { } } return(result); }
private bool IsSearchFolderPopulated(SearchFolder folder, out SearchState state) { SearchFolderCriteria searchCriteria = folder.GetSearchCriteria(); state = searchCriteria.SearchState; return((searchCriteria.SearchState & SearchState.Rebuild) != SearchState.Rebuild); }
public virtual bool GetDidLastSearchFail() { if (!this.IsInSearch) { return(false); } if (this.didLastSearchFail != null) { return(this.didLastSearchFail.Value); } SearchFolder searchFolder = this.DataFolder as SearchFolder; if (searchFolder != null && this.UserContext.IsPushNotificationsEnabled) { bool flag2; bool flag = this.UserContext.MapiNotificationManager.HasCurrentSearchCompleted((MailboxSession)searchFolder.Session, searchFolder.StoreObjectId, out flag2); if (flag && flag2) { this.didLastSearchFail = new bool?((searchFolder.GetSearchCriteria().SearchState & SearchState.Failed) != SearchState.None); } if (this.didLastSearchFail != null && this.didLastSearchFail == true) { SearchPerformanceData searchPerformanceData = this.UserContext.MapiNotificationManager.GetSearchPerformanceData((MailboxSession)searchFolder.Session); searchPerformanceData.SearchFailed(); } } return(this.didLastSearchFail != null && this.didLastSearchFail.Value); }
public IEnumerable <T> EndAuditLogQuery <T>(IAsyncResult asyncResult, IAuditQueryStrategy <T> queryStrategy) { SearchFolder searchFolder = this.folder as SearchFolder; if (searchFolder != null) { SearchFolderCriteria searchCriteria = searchFolder.GetSearchCriteria(); if ((searchCriteria.SearchState & SearchState.FailNonContentIndexedSearch) == SearchState.FailNonContentIndexedSearch && (searchCriteria.SearchState & SearchState.Failed) == SearchState.Failed) { throw queryStrategy.GetQueryFailedException(); } } AuditLog.AuditLogQueryContext.QueryRecordStrategy <T> strategy = new AuditLog.AuditLogQueryContext.QueryRecordStrategy <T>(queryStrategy); return(AuditLog.InternalFindAuditRecords <T>(this.folder, strategy)); }
internal Folder GetNoArchiveTagSearchFolder() { bool flag = false; SearchFolder searchFolder = null; Folder result; try { searchFolder = this.CreateSearchFolder("NoArchiveTagSearchFolder8534F96D-4183-41fb-8A05-9B7112AE2100"); SearchFolderCriteria searchFolderCriteria = new SearchFolderCriteria(SearchFolderManager.NoArchiveTagFolderQuery, new StoreId[] { this.mailboxSession.GetDefaultFolderId(DefaultFolderType.Root) }); searchFolderCriteria.DeepTraversal = true; SearchFolderCriteria searchFolderCriteria2 = null; try { searchFolderCriteria2 = searchFolder.GetSearchCriteria(); } catch (ObjectNotInitializedException) { SearchFolderManager.Tracer.TraceDebug((long)this.GetHashCode(), "{0}: SearchFolderCriteria could not be retrieved from search folder. Need to set it."); } if (searchFolderCriteria2 == null || !this.SearchCriterionMatches(searchFolderCriteria2, searchFolderCriteria)) { this.PopulateDynamicSearchFolder(searchFolder, searchFolderCriteria); } flag = true; result = searchFolder; } finally { if (!flag && searchFolder != null) { searchFolder.Dispose(); } } return(result); }
// Token: 0x060005CD RID: 1485 RVA: 0x0002BC64 File Offset: 0x00029E64 private StoreId SubmitSearch(QueryFilter searchCriteriaFilter) { StoreId result = null; MailboxSession mailboxSession = base.MailboxDataForTags.MailboxSession; if (searchCriteriaFilter != null) { if (!mailboxSession.Mailbox.IsContentIndexingEnabled) { DiscoveryHoldEnforcer.Tracer.TraceError <DiscoveryHoldEnforcer, string>((long)this.GetHashCode(), "{0}: CI search failed on the mailbox {1}. CI is not enabled on the mailbox database", this, mailboxSession.ToString()); throw new DiscoveryHoldSearchException(Strings.ErrorDiscoveryHoldsCIIndexDisabledOnDatabase(searchCriteriaFilter.ToString(), mailboxSession.ToString())); } DiscoveryHoldEnforcer.Tracer.TraceDebug <DiscoveryHoldEnforcer, string>((long)this.GetHashCode(), "{0} : Creating search folder for hold queries for mailbox {1}", this, mailboxSession.ToString()); using (SearchFolder searchFolder = SearchFolder.Create(mailboxSession, this.discoveryHoldsFolderId, DiscoveryHoldEnforcer.SearchDiscoveryHoldsFolderName, CreateMode.OpenIfExists)) { searchFolder.Save(); searchFolder.Load(); result = searchFolder.Id; QueryFilter searchQuery = new CountFilter(10000U, searchCriteriaFilter); SearchFolderCriteria searchFolderCriteria = new SearchFolderCriteria(searchQuery, new StoreId[] { this.discoveryHoldsFolderId }); searchFolderCriteria.DeepTraversal = true; searchFolderCriteria.UseCiForComplexQueries = true; searchFolderCriteria.FailNonContentIndexedSearch = true; int num = 0; bool flag = true; while (flag) { DiscoveryHoldEnforcer.Tracer.TraceDebug <DiscoveryHoldEnforcer, string, int>((long)this.GetHashCode(), "{0} : Begin search folder execution for mailbox {1}. Attempt#: {2}", this, mailboxSession.ToString(), num); IAsyncResult asyncResult = searchFolder.BeginApplyOneTimeSearch(searchFolderCriteria, null, null); bool flag2 = asyncResult.AsyncWaitHandle.WaitOne(60000, false); if (flag2) { DiscoveryHoldEnforcer.Tracer.TraceDebug <DiscoveryHoldEnforcer, string>((long)this.GetHashCode(), "{0} : Search folder execution completed for mailbox {1}", this, mailboxSession.ToString()); searchFolder.EndApplyOneTimeSearch(asyncResult); SearchFolderCriteria searchCriteria = searchFolder.GetSearchCriteria(); if ((searchCriteria.SearchState & SearchState.FailNonContentIndexedSearch) == SearchState.FailNonContentIndexedSearch && (searchCriteria.SearchState & SearchState.Failed) == SearchState.Failed) { DiscoveryHoldEnforcer.Tracer.TraceDebug <DiscoveryHoldEnforcer, string>((long)this.GetHashCode(), "{0} : Discovery Hold search failed because CI is not running, search query was not served by CI for mailbox {1}", this, mailboxSession.ToString()); throw new DiscoveryHoldSearchException(Strings.ErrorDiscoveryHoldsCIIndexNotRunning(searchCriteriaFilter.ToString(), mailboxSession.ToString())); } flag = false; } else { DiscoveryHoldEnforcer.Tracer.TraceDebug <DiscoveryHoldEnforcer, string>((long)this.GetHashCode(), "{0} : Discovery Hold Search folder execution has timed out for mailbox {1}", this, mailboxSession.ToString()); if (num >= 3) { DiscoveryHoldEnforcer.Tracer.TraceDebug <DiscoveryHoldEnforcer, string, int>((long)this.GetHashCode(), "{0} : Discovery Hold Search folder execution has timed out for mailbox {1} and exceeded max retry count {2}. Give up.", this, mailboxSession.ToString(), 3); throw new DiscoveryHoldSearchException(Strings.ErrorDiscoverySearchTimeout(60.ToString(), searchCriteriaFilter.ToString(), mailboxSession.ToString())); } flag = true; num++; } } searchFolder.Save(); searchFolder.Load(); } } return(result); }