/// <summary> /// An overload for expanding a list of SerializableSceneNodes. /// </summary> public static List <T> ExpandNodeInstanceSubtrees <T>( this IReadOnlyList <SerializableSceneNode> nodes, ExpansionMode expansionMode, CreateNewNodeFunc <SerializableSceneNode, T> createNewNodeFunc) => ExpandNodeInstanceSubtrees( nodes.Select(n => new SerializableSceneNodeInstanceAdapter(n)).ToList(), expansionMode, createNewNodeFunc);
internal override void RestoreBookmark(ResultSetBookmark bookmark) { ADDNLinkedAttrSetBookmark aDDNLinkedAttrSetBookmark = (ADDNLinkedAttrSetBookmark)bookmark; this.usersVisited = aDDNLinkedAttrSetBookmark.usersVisited; this.groupsToVisit = aDDNLinkedAttrSetBookmark.groupsToVisit; this.groupsVisited = aDDNLinkedAttrSetBookmark.groupsVisited; this.storeCtx = aDDNLinkedAttrSetBookmark.storeCtx; this.current = aDDNLinkedAttrSetBookmark.current; this.returnedPrimaryGroup = aDDNLinkedAttrSetBookmark.returnedPrimaryGroup; this.foreignMembersCurrentGroup = aDDNLinkedAttrSetBookmark.foreignMembersCurrentGroup; this.fakePrincipalMembers = aDDNLinkedAttrSetBookmark.fakePrincipalMembers; this.foreignMembersToReturn = aDDNLinkedAttrSetBookmark.foreignMembersToReturn; this.currentForeignPrincipal = aDDNLinkedAttrSetBookmark.currentForeignPrincipal; this.currentForeignDE = aDDNLinkedAttrSetBookmark.currentForeignDE; this.foreignGroups = aDDNLinkedAttrSetBookmark.foreignGroups; if (this.queryMembersResults != null) { this.queryMembersResults.Dispose(); } this.queryMembersResults = aDDNLinkedAttrSetBookmark.queryMembersResults; this.queryMembersResultEnumerator = aDDNLinkedAttrSetBookmark.queryMembersResultEnumerator; this.memberSearchResults = aDDNLinkedAttrSetBookmark.memberSearchResults; this.memberSearchResultsEnumerator = aDDNLinkedAttrSetBookmark.memberSearchResultsEnumerator; this.atBeginning = aDDNLinkedAttrSetBookmark.atBeginning; this.expansionMode = aDDNLinkedAttrSetBookmark.expansionMode; this.members = aDDNLinkedAttrSetBookmark.members; this.membersEnum = aDDNLinkedAttrSetBookmark.membersEnum; if (this.membersQueue != null) { this.membersQueue.Clear(); if (aDDNLinkedAttrSetBookmark.membersQueue != null) { foreach (IEnumerable enumerable in aDDNLinkedAttrSetBookmark.membersQueue) { this.membersQueue.Enqueue(enumerable); } } } if (this.memberSearchersQueue != null) { foreach (DirectorySearcher directorySearcher in this.memberSearchersQueue) { directorySearcher.Dispose(); } this.memberSearchersQueue.Clear(); if (aDDNLinkedAttrSetBookmark.memberSearcherQueue != null) { foreach (DirectorySearcher directorySearcher1 in aDDNLinkedAttrSetBookmark.memberSearcherQueue) { this.memberSearchersQueue.Enqueue(directorySearcher1); } } } }
internal ADDNLinkedAttrSet(string groupDN, DirectorySearcher[] membersSearcher, string primaryGroupDN, DirectorySearcher primaryGroupMembersSearcher, bool recursive, ADStoreCtx storeCtx) { this.pathLock = new object(); this.usersVisited = new Dictionary <string, bool>(); this.groupsVisited = new List <string>(); this.groupsToVisit = new List <string>(); this.membersQueue = new Queue <IEnumerable>(); this.originalMembers = new Queue <IEnumerable>(); this.atBeginning = true; this.foreignMembersCurrentGroup = new List <DirectoryEntry>(); this.fakePrincipalMembers = new List <DirectoryEntry>(); this.foreignGroups = new List <GroupPrincipal>(); this.memberSearchersQueue = new Queue <DirectorySearcher>(); this.memberSearchersQueueOriginal = new Queue <DirectorySearcher>(); this.groupsVisited.Add(groupDN); this.recursive = recursive; this.storeCtx = storeCtx; this.originalStoreCtx = storeCtx; this.members = null; this.originalMembers = null; this.membersEnum = null; this.primaryGroupDN = primaryGroupDN; if (primaryGroupDN == null) { this.returnedPrimaryGroup = true; } if (membersSearcher != null) { DirectorySearcher[] directorySearcherArray = membersSearcher; for (int i = 0; i < (int)directorySearcherArray.Length; i++) { DirectorySearcher directorySearcher = directorySearcherArray[i]; this.memberSearchersQueue.Enqueue(directorySearcher); this.memberSearchersQueueOriginal.Enqueue(directorySearcher); } } this.currentMembersSearcher = null; this.primaryGroupMembersSearcher = primaryGroupMembersSearcher; this.expansionMode = ExpansionMode.ASQ; this.originalExpansionMode = this.expansionMode; }
public void TestMode(ExpansionMode mode) { AddStep("create mod display", () => { Child = new ModDisplay { Anchor = Anchor.Centre, Origin = Anchor.Centre, ExpansionMode = mode, Current = { Value = new Mod[] { new OsuModHardRock(), new OsuModDoubleTime(), new OsuModDifficultyAdjust(), new OsuModEasy(), } } }; }); }
// TODO: TECH DEBT - A DUPLICATE OF SerializableSceneNodeExtensions >> GetExpandedGeometryIdsAndTransforms public static List <VimSceneNode> GetExpandedVimSceneNodes( VimScene scene, IReadOnlyList <SerializableSceneNode> nodes, ExpansionMode expansionMode) { // Start with a flat collection of tree nodes. var treeNodes = nodes.Select(n => new Tree <SerializableSceneNode> { Value = n }).ToArray(); // Establish the parent/child hierarchy. foreach (var treeNode in treeNodes) { var parentIndex = treeNode.Value.Parent; if (parentIndex < 0 || parentIndex >= treeNodes.Length) { continue; } treeNodes[parentIndex].AddChild(treeNode); } var result = new List <VimSceneNode>(); switch (expansionMode) { case ExpansionMode.WorldSpaceGeometry: // DEPRECATED: This is a legacy stopgap to allow support for objectmodel version 2. // objectmodel version 3 and onward expects local space geometry. CollectVimSceneNodesFromWorldSpaceGeometry(scene, treeNodes, treeNodes, Matrix4x4.Identity, result); break; case ExpansionMode.LocalGeometry: CollectVimSceneNodesFromLocalSpaceGeometry(scene, treeNodes, treeNodes, Matrix4x4.Identity, result); break; } return(result); }
/// <summary> /// Converts the list of nodes (containing instanced subtrees) into a flattened list of new objects. /// </summary> public static List <T> ExpandNodeInstanceSubtrees <N, T>( this IReadOnlyList <INodeInstance <N> > nodes, ExpansionMode expansionMode, CreateNewNodeFunc <N, T> createNewNodeFunc) { // Start with a flat collection of tree nodes. var treeNodes = nodes.Select(n => new Tree <INodeInstance <N> > { Value = n }).ToArray(); // Establish the parent/child hierarchy. foreach (var treeNode in treeNodes) { var parentIndex = treeNode.Value.Parent; if (parentIndex < 0 || parentIndex >= treeNodes.Length) { continue; } treeNodes[parentIndex].AddChild(treeNode); } var result = new List <T>(); switch (expansionMode) { case ExpansionMode.WorldSpaceGeometry: // DEPRECATED: This is a legacy stopgap to allow support for objectmodel version 2. // objectmodel version 3 and onward expects local space geometry. CollectNodesFromWorldSpaceGeometry(treeNodes, treeNodes, Matrix4x4.Identity, createNewNodeFunc, result); break; case ExpansionMode.LocalGeometry: CollectNodesFromLocalSpaceGeometry(treeNodes, treeNodes, Matrix4x4.Identity, createNewNodeFunc, result); break; } return(result); }
public static bool CustomDrawer_Enumlist(SettingHandle handle, Rect controlRect, string[] enumNames, float[] forcedWidths, ExpansionMode expansionMode, Color background) { drawBackground(controlRect, background); if (enumNames == null) { return(false); } if (enumNames.Length != forcedWidths.Length) { return(false); } if (expansionMode == ExpansionMode.Horizontal) { throw new NotImplementedException("Horizontal scrolling not yet implemented."); } float buttonWidth = controlRect.width; int forcedButtons = 0; for (int i = 0; i < forcedWidths.Length; i++) { if (forcedWidths[i] != 0f) { forcedButtons++; buttonWidth -= forcedWidths[i]; } } if (forcedButtons != enumNames.Length) { buttonWidth /= (float)(enumNames.Length - forcedButtons); } float position = controlRect.position.x; bool changed = false; for (int i = 0; i < enumNames.Length; i++) { float width = (forcedWidths[i] == 0f) ? buttonWidth : forcedWidths[i]; Rect buttonRect = new Rect(controlRect); buttonRect.position = new Vector2(position, buttonRect.position.y); buttonRect.width = width; //buttonRect = buttonRect.ContractedBy(2f); bool interacted = false; bool selected = handle.StringValue.Equals(enumNames[i]); string label = (handle.EnumStringPrefix + enumNames[i]).Translate(); if (expansionMode == ExpansionMode.Vertical) { float height = Text.CalcHeight(label, width); if (handle.CustomDrawerHeight < height) { handle.CustomDrawerHeight = height; } } Color activeColor = GUI.color; if (selected) { GUI.color = SelectedOptionColor; } interacted = Widgets.ButtonText(buttonRect, label); if (selected) { GUI.color = activeColor; } if (interacted) { handle.StringValue = enumNames[i]; changed = true; } position += width; } return(changed); }
internal override void Reset() { if (!this.atBeginning) { this.usersVisited.Clear(); this.groupsToVisit.Clear(); string item = this.groupsVisited[0]; this.groupsVisited.Clear(); this.groupsVisited.Add(item); this.members = null; this.membersEnum = null; if (this.originalMembers != null) { this.membersQueue.Clear(); foreach (IEnumerable enumerable in enumerable) { this.membersQueue.Enqueue(enumerable); IEnumerator enumerator = enumerable.GetEnumerator(); enumerator.Reset(); } } this.expansionMode = this.originalExpansionMode; this.storeCtx = this.originalStoreCtx; this.current = null; if (this.primaryGroupDN != null) { this.returnedPrimaryGroup = false; } this.foreignMembersCurrentGroup.Clear(); this.fakePrincipalMembers.Clear(); if (this.foreignMembersToReturn != null) { this.foreignMembersToReturn.Clear(); } this.currentForeignPrincipal = null; this.currentForeignDE = null; this.foreignGroups.Clear(); this.queryMembersResultEnumerator = null; if (this.queryMembersResults != null) { this.queryMembersResults.Dispose(); this.queryMembersResults = null; } if (this.currentMembersSearcher != null) { this.currentMembersSearcher.Dispose(); this.currentMembersSearcher = null; } this.memberSearchResultsEnumerator = null; if (this.memberSearchResults != null) { this.memberSearchResults.Dispose(); this.memberSearchResults = null; } if (this.memberSearchersQueue != null) { foreach (DirectorySearcher directorySearcher in this.memberSearchersQueue) { directorySearcher.Dispose(); } this.memberSearchersQueue.Clear(); if (this.memberSearchersQueueOriginal != null) { foreach (DirectorySearcher directorySearcher1 in this.memberSearchersQueueOriginal) { this.memberSearchersQueue.Enqueue(directorySearcher1); } } } this.atBeginning = true; } }
private bool MoveNextForeign(ref bool outerNeedToRetry) { bool flag; Principal principal; StoreCtx queryCtx; bool hasValue; outerNeedToRetry = false; do { flag = false; if (this.foreignMembersCurrentGroup.Count > 0) { this.TranslateForeignMembers(); } if (this.fakePrincipalMembers.Count <= 0) { if (this.foreignMembersToReturn == null || this.foreignMembersToReturn.Length <= 0) { if (this.foreignGroups.Count <= 0) { return(false); } else { outerNeedToRetry = true; if (this.foreignGroups[0].Context.ServerInformation.OsVersion != DomainControllerMode.Win2k) { GroupScope?groupScope = this.foreignGroups[0].GroupScope; if (groupScope.GetValueOrDefault() != GroupScope.Global) { hasValue = true; } else { hasValue = !groupScope.HasValue; } if (!hasValue) { this.expansionMode = ExpansionMode.ASQ; return(this.ExpandForeignGroupSearcher()); } } this.expansionMode = ExpansionMode.Enum; return(this.ExpandForeignGroupEnumerator()); } } else { SidListEntry item = this.foreignMembersToReturn[0]; SidType sidType = Utils.ClassifySID(item.pSid); if (sidType != SidType.RealObjectFakeDomain) { ContextOptions aDDefaultContextOption = DefaultContextOptions.ADDefaultContextOption; PrincipalContext context = SDSCache.Domain.GetContext(item.sidIssuerName, this.storeCtx.Credentials, aDDefaultContextOption); queryCtx = context.QueryCtx; } else { queryCtx = this.storeCtx; } principal = queryCtx.FindPrincipalByIdentRef(typeof(Principal), "ms-sid", (new SecurityIdentifier(Utils.ConvertNativeSidToByteArray(this.foreignMembersToReturn[0].pSid), 0)).ToString(), DateTime.UtcNow); if (principal != null) { this.foreignMembersToReturn.RemoveAt(0); } else { throw new PrincipalOperationException(StringResources.ADStoreCtxFailedFindCrossStoreTarget); } } } else { principal = this.storeCtx.ConstructFakePrincipalFromSID((byte[])this.fakePrincipalMembers[0].Properties["objectSid"].Value); this.fakePrincipalMembers[0].Dispose(); this.fakePrincipalMembers.RemoveAt(0); } if (principal as GroupPrincipal == null) { DirectoryEntry underlyingObject = (DirectoryEntry)principal.GetUnderlyingObject(); this.storeCtx.LoadDirectoryEntryAttributes(underlyingObject); if (this.usersVisited.ContainsKey(underlyingObject.Properties["distinguishedName"][0].ToString())) { principal.Dispose(); flag = true; } else { this.usersVisited.Add(underlyingObject.Properties["distinguishedName"][0].ToString(), true); this.current = null; this.currentForeignDE = null; this.currentForeignPrincipal = principal; return(true); } } else { if (!principal.fakePrincipal) { string value = (string)((DirectoryEntry)principal.UnderlyingObject).Properties["distinguishedName"].Value; if (this.groupsVisited.Contains(value) || this.groupsToVisit.Contains(value)) { principal.Dispose(); } else { this.foreignGroups.Add((GroupPrincipal)principal); } } flag = true; } }while (flag); return(false); }
internal override ResultSetBookmark BookmarkAndReset() { ADDNLinkedAttrSetBookmark aDDNLinkedAttrSetBookmark = new ADDNLinkedAttrSetBookmark(); aDDNLinkedAttrSetBookmark.usersVisited = this.usersVisited; this.usersVisited = new Dictionary <string, bool>(); aDDNLinkedAttrSetBookmark.groupsToVisit = this.groupsToVisit; this.groupsToVisit = new List <string>(); string item = this.groupsVisited[0]; aDDNLinkedAttrSetBookmark.groupsVisited = this.groupsVisited; this.groupsVisited = new List <string>(); this.groupsVisited.Add(item); aDDNLinkedAttrSetBookmark.expansionMode = this.expansionMode; aDDNLinkedAttrSetBookmark.members = this.members; aDDNLinkedAttrSetBookmark.membersEnum = this.membersEnum; this.members = null; this.membersEnum = null; if (this.membersQueue != null) { aDDNLinkedAttrSetBookmark.membersQueue = new Queue <IEnumerable>(this.membersQueue.Count); foreach (IEnumerable enumerable in this.membersQueue) { aDDNLinkedAttrSetBookmark.membersQueue.Enqueue(enumerable); } } if (this.membersQueue != null) { this.membersQueue.Clear(); if (this.originalMembers != null) { foreach (IEnumerable enumerable1 in this.originalMembers) { this.membersQueue.Enqueue(enumerable1); IEnumerator enumerator = enumerable1.GetEnumerator(); enumerator.Reset(); } } } aDDNLinkedAttrSetBookmark.storeCtx = this.storeCtx; this.expansionMode = this.originalExpansionMode; if (this.currentMembersSearcher != null) { this.currentMembersSearcher.Dispose(); this.currentMembersSearcher = null; } this.storeCtx = this.originalStoreCtx; aDDNLinkedAttrSetBookmark.current = this.current; aDDNLinkedAttrSetBookmark.returnedPrimaryGroup = this.returnedPrimaryGroup; this.current = null; if (this.primaryGroupDN != null) { this.returnedPrimaryGroup = false; } aDDNLinkedAttrSetBookmark.foreignMembersCurrentGroup = this.foreignMembersCurrentGroup; aDDNLinkedAttrSetBookmark.fakePrincipalMembers = this.fakePrincipalMembers; aDDNLinkedAttrSetBookmark.foreignMembersToReturn = this.foreignMembersToReturn; aDDNLinkedAttrSetBookmark.currentForeignPrincipal = this.currentForeignPrincipal; aDDNLinkedAttrSetBookmark.currentForeignDE = this.currentForeignDE; this.foreignMembersCurrentGroup = new List <DirectoryEntry>(); this.fakePrincipalMembers = new List <DirectoryEntry>(); this.currentForeignDE = null; aDDNLinkedAttrSetBookmark.foreignGroups = this.foreignGroups; this.foreignGroups = new List <GroupPrincipal>(); aDDNLinkedAttrSetBookmark.queryMembersResults = this.queryMembersResults; aDDNLinkedAttrSetBookmark.queryMembersResultEnumerator = this.queryMembersResultEnumerator; this.queryMembersResults = null; this.queryMembersResultEnumerator = null; aDDNLinkedAttrSetBookmark.memberSearchResults = this.memberSearchResults; aDDNLinkedAttrSetBookmark.memberSearchResultsEnumerator = this.memberSearchResultsEnumerator; this.memberSearchResults = null; this.memberSearchResultsEnumerator = null; if (this.memberSearchersQueue != null) { aDDNLinkedAttrSetBookmark.memberSearcherQueue = new Queue <DirectorySearcher>(this.memberSearchersQueue.Count); foreach (DirectorySearcher directorySearcher in this.memberSearchersQueue) { aDDNLinkedAttrSetBookmark.memberSearcherQueue.Enqueue(directorySearcher); } } if (this.memberSearchersQueueOriginal != null) { this.memberSearchersQueue.Clear(); foreach (DirectorySearcher directorySearcher1 in this.memberSearchersQueueOriginal) { this.memberSearchersQueue.Enqueue(directorySearcher1); } } aDDNLinkedAttrSetBookmark.atBeginning = this.atBeginning; this.atBeginning = true; return(aDDNLinkedAttrSetBookmark); }
private bool MoveNextForeign(ref bool outerNeedToRetry) { bool flag; Principal principal; StoreCtx queryCtx; bool hasValue; outerNeedToRetry = false; do { flag = false; if (this.foreignMembersCurrentGroup.Count > 0) { this.TranslateForeignMembers(); } if (this.fakePrincipalMembers.Count <= 0) { if (this.foreignMembersToReturn == null || this.foreignMembersToReturn.Length <= 0) { if (this.foreignGroups.Count <= 0) { return false; } else { outerNeedToRetry = true; if (this.foreignGroups[0].Context.ServerInformation.OsVersion != DomainControllerMode.Win2k) { GroupScope? groupScope = this.foreignGroups[0].GroupScope; if (groupScope.GetValueOrDefault() != GroupScope.Global) { hasValue = true; } else { hasValue = !groupScope.HasValue; } if (!hasValue) { this.expansionMode = ExpansionMode.ASQ; return this.ExpandForeignGroupSearcher(); } } this.expansionMode = ExpansionMode.Enum; return this.ExpandForeignGroupEnumerator(); } } else { SidListEntry item = this.foreignMembersToReturn[0]; SidType sidType = Utils.ClassifySID(item.pSid); if (sidType != SidType.RealObjectFakeDomain) { ContextOptions aDDefaultContextOption = DefaultContextOptions.ADDefaultContextOption; PrincipalContext context = SDSCache.Domain.GetContext(item.sidIssuerName, this.storeCtx.Credentials, aDDefaultContextOption); queryCtx = context.QueryCtx; } else { queryCtx = this.storeCtx; } principal = queryCtx.FindPrincipalByIdentRef(typeof(Principal), "ms-sid", (new SecurityIdentifier(Utils.ConvertNativeSidToByteArray(this.foreignMembersToReturn[0].pSid), 0)).ToString(), DateTime.UtcNow); if (principal != null) { this.foreignMembersToReturn.RemoveAt(0); } else { throw new PrincipalOperationException(StringResources.ADStoreCtxFailedFindCrossStoreTarget); } } } else { principal = this.storeCtx.ConstructFakePrincipalFromSID((byte[])this.fakePrincipalMembers[0].Properties["objectSid"].Value); this.fakePrincipalMembers[0].Dispose(); this.fakePrincipalMembers.RemoveAt(0); } if (principal as GroupPrincipal == null) { DirectoryEntry underlyingObject = (DirectoryEntry)principal.GetUnderlyingObject(); this.storeCtx.LoadDirectoryEntryAttributes(underlyingObject); if (this.usersVisited.ContainsKey(underlyingObject.Properties["distinguishedName"][0].ToString())) { principal.Dispose(); flag = true; } else { this.usersVisited.Add(underlyingObject.Properties["distinguishedName"][0].ToString(), true); this.current = null; this.currentForeignDE = null; this.currentForeignPrincipal = principal; return true; } } else { if (!principal.fakePrincipal) { string value = (string)((DirectoryEntry)principal.UnderlyingObject).Properties["distinguishedName"].Value; if (this.groupsVisited.Contains(value) || this.groupsToVisit.Contains(value)) { principal.Dispose(); } else { this.foreignGroups.Add((GroupPrincipal)principal); } } flag = true; } } while (flag); return false; }
internal override ResultSetBookmark BookmarkAndReset() { ADDNLinkedAttrSetBookmark aDDNLinkedAttrSetBookmark = new ADDNLinkedAttrSetBookmark(); aDDNLinkedAttrSetBookmark.usersVisited = this.usersVisited; this.usersVisited = new Dictionary<string, bool>(); aDDNLinkedAttrSetBookmark.groupsToVisit = this.groupsToVisit; this.groupsToVisit = new List<string>(); string item = this.groupsVisited[0]; aDDNLinkedAttrSetBookmark.groupsVisited = this.groupsVisited; this.groupsVisited = new List<string>(); this.groupsVisited.Add(item); aDDNLinkedAttrSetBookmark.expansionMode = this.expansionMode; aDDNLinkedAttrSetBookmark.members = this.members; aDDNLinkedAttrSetBookmark.membersEnum = this.membersEnum; this.members = null; this.membersEnum = null; if (this.membersQueue != null) { aDDNLinkedAttrSetBookmark.membersQueue = new Queue<IEnumerable>(this.membersQueue.Count); foreach (IEnumerable enumerable in this.membersQueue) { aDDNLinkedAttrSetBookmark.membersQueue.Enqueue(enumerable); } } if (this.membersQueue != null) { this.membersQueue.Clear(); if (this.originalMembers != null) { foreach (IEnumerable enumerable1 in this.originalMembers) { this.membersQueue.Enqueue(enumerable1); IEnumerator enumerator = enumerable1.GetEnumerator(); enumerator.Reset(); } } } aDDNLinkedAttrSetBookmark.storeCtx = this.storeCtx; this.expansionMode = this.originalExpansionMode; if (this.currentMembersSearcher != null) { this.currentMembersSearcher.Dispose(); this.currentMembersSearcher = null; } this.storeCtx = this.originalStoreCtx; aDDNLinkedAttrSetBookmark.current = this.current; aDDNLinkedAttrSetBookmark.returnedPrimaryGroup = this.returnedPrimaryGroup; this.current = null; if (this.primaryGroupDN != null) { this.returnedPrimaryGroup = false; } aDDNLinkedAttrSetBookmark.foreignMembersCurrentGroup = this.foreignMembersCurrentGroup; aDDNLinkedAttrSetBookmark.fakePrincipalMembers = this.fakePrincipalMembers; aDDNLinkedAttrSetBookmark.foreignMembersToReturn = this.foreignMembersToReturn; aDDNLinkedAttrSetBookmark.currentForeignPrincipal = this.currentForeignPrincipal; aDDNLinkedAttrSetBookmark.currentForeignDE = this.currentForeignDE; this.foreignMembersCurrentGroup = new List<DirectoryEntry>(); this.fakePrincipalMembers = new List<DirectoryEntry>(); this.currentForeignDE = null; aDDNLinkedAttrSetBookmark.foreignGroups = this.foreignGroups; this.foreignGroups = new List<GroupPrincipal>(); aDDNLinkedAttrSetBookmark.queryMembersResults = this.queryMembersResults; aDDNLinkedAttrSetBookmark.queryMembersResultEnumerator = this.queryMembersResultEnumerator; this.queryMembersResults = null; this.queryMembersResultEnumerator = null; aDDNLinkedAttrSetBookmark.memberSearchResults = this.memberSearchResults; aDDNLinkedAttrSetBookmark.memberSearchResultsEnumerator = this.memberSearchResultsEnumerator; this.memberSearchResults = null; this.memberSearchResultsEnumerator = null; if (this.memberSearchersQueue != null) { aDDNLinkedAttrSetBookmark.memberSearcherQueue = new Queue<DirectorySearcher>(this.memberSearchersQueue.Count); foreach (DirectorySearcher directorySearcher in this.memberSearchersQueue) { aDDNLinkedAttrSetBookmark.memberSearcherQueue.Enqueue(directorySearcher); } } if (this.memberSearchersQueueOriginal != null) { this.memberSearchersQueue.Clear(); foreach (DirectorySearcher directorySearcher1 in this.memberSearchersQueueOriginal) { this.memberSearchersQueue.Enqueue(directorySearcher1); } } aDDNLinkedAttrSetBookmark.atBeginning = this.atBeginning; this.atBeginning = true; return aDDNLinkedAttrSetBookmark; }
internal ADDNLinkedAttrSet(string groupDN, DirectorySearcher[] membersSearcher, string primaryGroupDN, DirectorySearcher primaryGroupMembersSearcher, bool recursive, ADStoreCtx storeCtx) { this.pathLock = new object(); this.usersVisited = new Dictionary<string, bool>(); this.groupsVisited = new List<string>(); this.groupsToVisit = new List<string>(); this.membersQueue = new Queue<IEnumerable>(); this.originalMembers = new Queue<IEnumerable>(); this.atBeginning = true; this.foreignMembersCurrentGroup = new List<DirectoryEntry>(); this.fakePrincipalMembers = new List<DirectoryEntry>(); this.foreignGroups = new List<GroupPrincipal>(); this.memberSearchersQueue = new Queue<DirectorySearcher>(); this.memberSearchersQueueOriginal = new Queue<DirectorySearcher>(); this.groupsVisited.Add(groupDN); this.recursive = recursive; this.storeCtx = storeCtx; this.originalStoreCtx = storeCtx; this.members = null; this.originalMembers = null; this.membersEnum = null; this.primaryGroupDN = primaryGroupDN; if (primaryGroupDN == null) { this.returnedPrimaryGroup = true; } if (membersSearcher != null) { DirectorySearcher[] directorySearcherArray = membersSearcher; for (int i = 0; i < (int)directorySearcherArray.Length; i++) { DirectorySearcher directorySearcher = directorySearcherArray[i]; this.memberSearchersQueue.Enqueue(directorySearcher); this.memberSearchersQueueOriginal.Enqueue(directorySearcher); } } this.currentMembersSearcher = null; this.primaryGroupMembersSearcher = primaryGroupMembersSearcher; this.expansionMode = ExpansionMode.ASQ; this.originalExpansionMode = this.expansionMode; }