List <FolderRec> IMailbox.EnumerateFolderHierarchy(EnumerateFolderHierarchyFlags flags, PropTag[] additionalPtagsToLoad) { MrsTracer.Provider.Function("ImapMailbox.EnumerateFolderHierarchy({0})", new object[] { flags }); base.VerifyMailboxConnection(VerifyMailboxConnectionFlags.None); List <FolderRec> list = null; List <ImapClientFolder> list2 = this.EnumerateFolderHierarchy(); list2.Add(new ImapClientFolder(ImapMailbox.Root) { IsSelectable = false }); list2.Add(new ImapClientFolder(ImapMailbox.IpmSubtree) { IsSelectable = false }); ImapClientFolder.FindWellKnownFolders(list2); this.folderCache = new EntryIdMap <ImapClientFolder>(); list = new List <FolderRec>(list2.Count); foreach (ImapClientFolder imapClientFolder in list2) { FolderRec folderRec = this.CreateFolderRec(imapClientFolder); list.Add(folderRec); this.folderCache.Add(folderRec.EntryId, imapClientFolder); } return(list); }
List <FolderRec> IMailbox.EnumerateFolderHierarchy(EnumerateFolderHierarchyFlags flags, PropTag[] additionalPtagsToLoad) { MrsTracer.Provider.Function("PopMailbox.EnumerateFolderHierarchy({0})", new object[] { flags }); return(PopMailbox.folderHierarchy); }
public void LoadHierarchy(EnumerateFolderHierarchyFlags flags, string rootFolderPath, bool createRootIfNeeded, PropTag[] additionalPtagsToLoad) { List <PropTag> list = new List <PropTag>(); if (this.SourceWKFTypePtag != PropTag.Null) { list.Add(this.SourceWKFTypePtag); } if (this.SourceEntryIDPtag != PropTag.Null) { list.Add(this.SourceEntryIDPtag); } if (additionalPtagsToLoad != null) { list.AddRange(additionalPtagsToLoad); } List <FolderRecWrapper> folders = this.mbxWrapper.LoadFolders <FolderMapping>(flags, list.ToArray()); base.Config(folders); this.DiscoverWellKnownFolders(); if (string.IsNullOrEmpty(rootFolderPath)) { this.rootFolder = (FolderMapping)this.RootRec; } else { FolderMappingFlags folderMappingFlags; this.rootFolder = this.FindFolderByPath(string.Empty, rootFolderPath, createRootIfNeeded, out folderMappingFlags); if (this.rootFolder == null) { throw new FolderIsMissingPermanentException(rootFolderPath); } if (!base.IsPublicFolderMailbox) { this.wellKnownFolderMap.Reset(); this.wellKnownFolderMap.Clear(); this.EnumerateSubtree(EnumHierarchyFlags.AllFolders, this.rootFolder, delegate(FolderRecWrapper fRec, FolderMap.EnumFolderContext ctx) { FolderMapping folderMapping = (FolderMapping)fRec; object obj = folderMapping.FolderRec[this.SourceWKFTypePtag]; if (obj != null) { this.SetWellKnownFolder((WellKnownFolderType)((int)obj), folderMapping); } }); if (this.GetWellKnownFolder(WellKnownFolderType.IpmSubtree) == null) { this.SetWellKnownFolder(WellKnownFolderType.IpmSubtree, this.rootFolder); } } } this.rootFolder.Flags |= FolderMappingFlags.Root; if (this.GetWellKnownFolder(WellKnownFolderType.IpmSubtree) == null && !base.IsPublicFolderMailbox) { throw new FolderIsMissingPermanentException("IPM subtree"); } }
List <FolderRec> IMailbox.EnumerateFolderHierarchy(EnumerateFolderHierarchyFlags flags, PropTag[] additionalPtagsToLoad) { MrsTracer.Provider.Function("PstMailbox.IMailbox.EnumerateFolderHierarchy({0})", new object[] { flags }); List <FolderRec> list = new List <FolderRec>(50); List <PropTag> list2 = new List <PropTag>(FolderRec.PtagsToLoad); if (additionalPtagsToLoad != null) { list2.AddRange(additionalPtagsToLoad); } PropertyTag[] array = PstMailbox.MoMTPtaFromPta(list2.ToArray()); try { IFolder folder = this.iPst.ReadFolder(290U); if (folder == null) { throw new UnableToGetPSTHierarchyPermanentException(this.filePath); } using (PstFxFolder pstFxFolder = new PstFxFolder(this, folder)) { list.Add(FolderRec.Create(PstMailbox.PvaFromMoMTPva(pstFxFolder.GetProps(array)))); PropertyValue property = this.MessageStorePropertyBag.GetProperty(PropertyTag.IPMSubtreeFolder); if (property.IsError || ((byte[])property.Value).Length != 24) { throw new UnableToGetPSTHierarchyPermanentException(this.filePath); } uint nodeIdFromEntryId = PstMailbox.GetNodeIdFromEntryId(this.iPst.MessageStore.Guid, (byte[])property.Value, true); IFolder folder2 = this.iPst.ReadFolder(nodeIdFromEntryId); if (folder2 == null) { throw new UnableToGetPSTHierarchyPermanentException(this.filePath); } this.GetHierarchy(folder2, list, array); } } catch (PSTIOException innerException) { throw new UnableToGetPSTHierarchyTransientException(this.filePath, innerException); } catch (PSTExceptionBase innerException2) { throw new UnableToGetPSTHierarchyPermanentException(this.filePath, innerException2); } MrsTracer.Provider.Debug("PST hierarchy contains {0} folders including root", new object[] { list.Count }); return(list); }
List <FolderRec> IMailbox.EnumerateFolderHierarchy(EnumerateFolderHierarchyFlags flags, PropTag[] additionalPtagsToLoad) { List <FolderRec> result = null; base.CreateContext("IMailbox.EnumerateFolderHierarchy", new DataContext[] { new PropTagsDataContext(additionalPtagsToLoad) }).Execute(delegate { result = this.WrappedObject.EnumerateFolderHierarchy(flags, additionalPtagsToLoad); }, true); return(result); }
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); }
List <FolderRec> IMailbox.EnumerateFolderHierarchy(EnumerateFolderHierarchyFlags flags, PropTag[] additionalPtagsToLoad) { MrsTracer.Provider.Function("EasMailbox.EnumerateFolderHierarchy({0})", new object[] { flags }); this.RefreshFolderCache(); List <FolderRec> list = new List <FolderRec>(this.EasFolderCache.Count + 2); foreach (Add add in this.EasFolderCache.Values) { list.Add(this.CreateGenericFolderRec(add)); } list.Add(EasSyntheticFolder.RootFolder.FolderRec); list.Add(EasSyntheticFolder.IpmSubtreeFolder.FolderRec); return(list); }
List <FolderRec> IMailbox.EnumerateFolderHierarchy(EnumerateFolderHierarchyFlags flags, PropTag[] additionalPtagsToLoad) { MrsTracer.ProxyClient.Function("RemoteMailbox.EnumerateFolderHierarchy({0})", new object[] { flags }); this.VerifyMailboxConnection(); bool flag; List <FolderRec> list = base.MrsProxy.IMailbox_EnumerateFolderHierarchyPaged2(base.Handle, flags, DataConverter <PropTagConverter, PropTag, int> .GetData(additionalPtagsToLoad), out flag); while (flag) { List <FolderRec> collection = base.MrsProxy.IMailbox_EnumerateFolderHierarchyNextBatch(base.Handle, out flag); list.AddRange(collection); } return(list); }
public List <FolderRecWrapper> LoadFolders <TFolderRec>(EnumerateFolderHierarchyFlags enumerateFolderHierarchyFlags, PropTag[] additionalPtags) where TFolderRec : FolderRecWrapper, new() { return(FolderRecWrapper.WrapList <TFolderRec>(this.Mailbox.EnumerateFolderHierarchy(enumerateFolderHierarchyFlags, additionalPtags))); }