public SchemaConnection(IEntryFetcherFactory entryFetcherFactory, String baseHost, String upn, String passwd) { this.entryFetcherFactory = entryFetcherFactory; baseEntryFetcher = entryFetcherFactory.CreateEntryFetcher(baseHost, upn, passwd); if (baseEntryFetcher == null) { throw new SchemaConnectionException("Base server is not reachable"); } entryFetchers = new Dictionary <String, IEntryFetcher>(); // DseRootEntry dseRootEntry = baseEntryFetcher.GetDseRootEntry(); // ServerEntry serverEntry = baseEntryFetcher.GetServerEntry(dseRootEntry.serverDn); //baseServerName = serverEntry.serverName; // RefreshSchemaConnection(upn, passwd); }
public void RefreshSchemaConnection(String upn, String passwd) { IList <ServerEntry> serverEntries = baseEntryFetcher.GetServerEntries(); entryFetchers.Clear(); Mutex mutex = new Mutex(); Parallel.ForEach(serverEntries, (e) => { if (String.Compare(baseServerName, e.serverName) != 0) { IEntryFetcher entryFetcher = entryFetcherFactory.CreateEntryFetcher( e.serverName, upn, passwd); mutex.WaitOne(); entryFetchers.Add(e.serverName, entryFetcher); mutex.ReleaseMutex(); } }); }