internal static ReconciliationCookie GetReconciliationCookie(ProvisioningReconciliationConfig provisioningReconciliationConfig, Task.TaskErrorLoggingDelegate errorLogger) { ITopologyConfigurationSession topologyConfigurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 42, "GetReconciliationCookie", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Common\\ProvisioningReconciliationHelper.cs"); ReconciliationCookie reconciliationCookie = null; if (provisioningReconciliationConfig.ReconciliationCookies != null && provisioningReconciliationConfig.ReconciliationCookies.Count > 0) { string empty = string.Empty; bool flag = false; using (MultiValuedProperty <ReconciliationCookie> .Enumerator enumerator = provisioningReconciliationConfig.ReconciliationCookies.GetEnumerator()) { while (enumerator.MoveNext()) { ReconciliationCookie reconciliationCookie2 = enumerator.Current; if (reconciliationCookie2.Version == ProvisioningReconciliationHelper.CurrentCookieVersion && ProvisioningReconciliationHelper.IsServerSuitable(reconciliationCookie2.InvocationId, topologyConfigurationSession, out empty, out flag)) { reconciliationCookie = new ReconciliationCookie(reconciliationCookie2.Version, empty, reconciliationCookie2.InvocationId, reconciliationCookie2.HighestCommittedUsn); if (flag) { break; } } } goto IL_E8; } } Fqdn[] domainControllersInLocalSite = ProvisioningReconciliationHelper.GetDomainControllersInLocalSite(errorLogger); if (domainControllersInLocalSite != null) { foreach (Fqdn fqdn in domainControllersInLocalSite) { reconciliationCookie = ProvisioningReconciliationHelper.GetReconciliationCookieForDomainController(fqdn, topologyConfigurationSession, errorLogger); if (reconciliationCookie != null) { break; } } } IL_E8: if (reconciliationCookie != null) { return(reconciliationCookie); } errorLogger(new TaskException(Strings.ErrorNoActiveDCForProvisioningReconciliationCookie), (ErrorCategory)1001, null); return(null); }
internal static MultiValuedProperty <ReconciliationCookie> GetReconciliationCookiesForNextCycle(string dc, Task.TaskErrorLoggingDelegate errorLogger) { MultiValuedProperty <ReconciliationCookie> multiValuedProperty = new MultiValuedProperty <ReconciliationCookie>(); ITopologyConfigurationSession topologyConfigurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(dc, true, ConsistencyMode.IgnoreInvalid, null, ADSessionSettings.FromRootOrgScopeSet(), 126, "GetReconciliationCookiesForNextCycle", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Common\\ProvisioningReconciliationHelper.cs"); topologyConfigurationSession.UseConfigNC = false; MultiValuedProperty <ReplicationCursor> multiValuedProperty2 = topologyConfigurationSession.ReadReplicationCursors(ADSession.GetDomainNamingContextForLocalForest()); topologyConfigurationSession.UseConfigNC = true; foreach (ReplicationCursor replicationCursor in multiValuedProperty2) { if (replicationCursor.SourceDsa != null) { ADServer adserver = topologyConfigurationSession.FindDCByInvocationId(replicationCursor.SourceInvocationId); if (adserver != null) { string dnsHostName = adserver.DnsHostName; ReconciliationCookie item = new ReconciliationCookie(ProvisioningReconciliationHelper.CurrentCookieVersion, dnsHostName, replicationCursor.SourceInvocationId, replicationCursor.UpToDatenessUsn); multiValuedProperty.Add(item); } } } return(multiValuedProperty); }