List <FolderRec> IMailbox.EnumerateFolderHierarchy(EnumerateFolderHierarchyFlags flags, PropTag[] additionalPtagsToLoad) { MrsTracer.Provider.Function("StorageMailbox.EnumerateFolderHierarchy({0})", new object[] { flags }); base.VerifyMailboxConnection(VerifyMailboxConnectionFlags.None); List <FolderRec> list = new List <FolderRec>(50); using (base.RHTracker.Start()) { bool flag = flags.HasFlag(EnumerateFolderHierarchyFlags.WellKnownPublicFoldersOnly); NativeStorePropertyDefinition[] propertiesToLoad; if (additionalPtagsToLoad == null || additionalPtagsToLoad.Length == 0) { propertiesToLoad = this.FolderPropertyDefinitionsToLoad; } else { List <NativeStorePropertyDefinition> list2 = new List <NativeStorePropertyDefinition>(); list2.AddRange(this.ConvertPropTagsToDefinitions(additionalPtagsToLoad)); list2.AddRange(this.FolderPropertyDefinitionsToLoad); propertiesToLoad = list2.ToArray(); } if (!flag) { this.LoadFolderHierarchy(this.GetFolderId(null), propertiesToLoad, list); } else { PublicFolderSession publicFolderSession = this.GetPublicFolderSession(); list.Add(this.GetFolderRec(this.GetFolderId(null), propertiesToLoad)); list.Add(this.GetFolderRec(publicFolderSession.GetIpmSubtreeFolderId(), propertiesToLoad)); list.Add(this.GetFolderRec(publicFolderSession.GetNonIpmSubtreeFolderId(), propertiesToLoad)); list.Add(this.GetFolderRec(publicFolderSession.GetEFormsRegistryFolderId(), propertiesToLoad)); list.Add(this.GetFolderRec(publicFolderSession.GetAsyncDeleteStateFolderId(), propertiesToLoad)); list.Add(this.GetFolderRec(publicFolderSession.GetDumpsterRootFolderId(), propertiesToLoad)); list.Add(this.GetFolderRec(publicFolderSession.GetInternalSubmissionFolderId(), propertiesToLoad)); list.Add(this.GetFolderRec(publicFolderSession.GetTombstonesRootFolderId(), propertiesToLoad)); } } MrsTracer.Provider.Debug("Loaded {0} folders", new object[] { list.Count }); return(list); }
internal static StoreObjectId GetFreeBusyRootFolderId(PublicFolderSession session) { StoreObjectId result; try { StoreObjectId storeObjectId = null; using (Folder folder = Folder.Bind(session, session.GetNonIpmSubtreeFolderId())) { storeObjectId = QueryChildFolderByName.Query(folder, "SCHEDULE+ FREE BUSY"); } if (storeObjectId == null) { FreeBusyFolder.Tracer.TraceError <string>(0L, "Unable to find folder '{0}' in public folders", "SCHEDULE+ FREE BUSY"); } result = storeObjectId; } catch (StoragePermanentException arg) { FreeBusyFolder.Tracer.TraceError <string, StoragePermanentException>(0L, "Failed to get folder '{0}' due exception: {1}", "SCHEDULE+ FREE BUSY", arg); result = null; } return(result); }