private IEnumerable <T> BuildMailboxBatchFromAD <T>(List <IMailboxBuilder <T> > builders, PropertyDefinition[] properties) where T : ILocatableMailbox
        {
            Stopwatch stopwatch = null;

            if (MailboxCollectionBuilder.Tracer.IsTraceEnabled(TraceType.DebugTrace))
            {
                stopwatch = new Stopwatch();
                stopwatch.Start();
            }
            string[] legacyDNs = builders.Select(delegate(IMailboxBuilder <T> builder)
            {
                T mailbox2 = builder.Mailbox;
                return(mailbox2.Locator.LegacyDn);
            }).ToArray <string>();
            Result <ADRawEntry>[] results = this.adSession.FindByLegacyExchangeDNs(legacyDNs, properties);
            if (MailboxCollectionBuilder.Tracer.IsTraceEnabled(TraceType.DebugTrace))
            {
                stopwatch.Stop();
                MailboxCollectionBuilder.Tracer.TraceDebug <long>(0L, "MailboxCollectionBuilder::BuildMailboxesFromAD. Batch AD Query took {0} ms.", stopwatch.ElapsedMilliseconds);
            }
            var pairs = builders.Zip(results, (IMailboxBuilder <T> builder, Result <ADRawEntry> adResult) => new
            {
                Builder  = builder,
                ADResult = adResult
            });

            foreach (var pair in pairs)
            {
                if (pair.ADResult.Error != null || pair.ADResult.Data == null)
                {
                    Microsoft.Exchange.Diagnostics.Trace tracer = MailboxCollectionBuilder.Tracer;
                    long   id           = (long)this.GetHashCode();
                    string formatString = "MailboxCollectionBuilder::BuildMailboxesFromAD. Unable to find LegacyDN {0} in AD using the batch query: {1}";
                    T      mailbox      = pair.Builder.Mailbox;
                    tracer.TraceWarning <string, string>(id, formatString, mailbox.Locator.LegacyDn, (pair.ADResult.Error != null) ? pair.ADResult.Error.ToString() : "Result.Data is null");
                    ADUser groupADUser;
                    if (this.TryGetGroupADUserFromADCache(pair.Builder.Mailbox, out groupADUser))
                    {
                        yield return(pair.Builder.BuildFromDirectory(groupADUser).Mailbox);
                    }
                }
                else
                {
                    yield return(pair.Builder.BuildFromDirectory(pair.ADResult.Data).Mailbox);
                }
            }
            yield break;
        }
Esempio n. 2
0
 internal static void TraceInformation(Microsoft.Exchange.Diagnostics.Trace trace, string formatString, params object[] args)
 {
     trace.Information(0L, formatString, args);
 }
Esempio n. 3
0
 internal static void ExitFunction(Microsoft.Exchange.Diagnostics.Trace trace, string functionName)
 {
     trace.TraceFunction <string>(0L, Logger.traceFunctionExitString, functionName);
 }
Esempio n. 4
0
 // Token: 0x0600003F RID: 63 RVA: 0x00003070 File Offset: 0x00001270
 internal static void TraceError(Microsoft.Exchange.Diagnostics.Trace trace, string formatString, params object[] args)
 {
     trace.TraceError(0L, formatString + Logger.appDomainTraceInfo, args);
 }
Esempio n. 5
0
        internal static T GetValueFromRegistry <T>(string registryPath, string valueName, T defaultValue, Microsoft.Exchange.Diagnostics.Trace tracer)
        {
            T result = defaultValue;

            try
            {
                using (RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(registryPath, false))
                {
                    if (registryKey != null)
                    {
                        object value = registryKey.GetValue(valueName, defaultValue);
                        if (value is T)
                        {
                            tracer.TraceDebug <string, object>(0L, "Using {0} = {1} (from registry)", valueName, value);
                            result = (T)((object)value);
                        }
                        else
                        {
                            tracer.TraceError <string, string, T>(0L, "{0} has wrong type {1}, using {2}.", valueName, (value == null) ? "<undefined>" : value.GetType().Name, defaultValue);
                        }
                    }
                    else
                    {
                        tracer.TraceError <string, T>(0L, "Opening registry key {0} failed, using {1}.", valueName, defaultValue);
                    }
                }
            }
            catch (SecurityException ex)
            {
                tracer.TraceError <string>(0L, "SecurityException: {0}", ex.Message);
            }
            catch (UnauthorizedAccessException ex2)
            {
                tracer.TraceError <string>(0L, "UnauthorizedAccessException: {0}", ex2.Message);
            }
            return(result);
        }
Esempio n. 6
0
        internal static T GetEnumValueFromRegistry <T>(string registryPath, string valueName, T defaultValue, Microsoft.Exchange.Diagnostics.Trace tracer) where T : struct
        {
            string valueFromRegistry = Globals.GetValueFromRegistry <string>(registryPath, valueName, defaultValue.ToString(), tracer);
            T      result;

            if (Enum.TryParse <T>(valueFromRegistry, out result))
            {
                tracer.TraceDebug <string, string>(0L, "Using enum {0} = {1} (from registry)", valueName, valueFromRegistry);
                return(result);
            }
            tracer.TraceError <string, string, T>(0L, "{0} has wrong enum value: {1}, using {2}.", valueName, valueFromRegistry, defaultValue);
            return(defaultValue);
        }
Esempio n. 7
0
 public AdminAuditWriter(Microsoft.Exchange.Diagnostics.Trace tracer)
 {
     this.Tracer = tracer;
 }
 private void TraceAndLogError(Microsoft.Exchange.Diagnostics.Trace tracer, string format, params object[] parameters)
 {
     tracer.TraceError((long)this.GetHashCode(), format, parameters);
     this.log.Log(DiagnosticsAggregationEvent.ServiceletError, format, parameters);
 }
Esempio n. 9
0
 public MrsTracerInstance(Microsoft.Exchange.Diagnostics.Trace traceObj, string name)
 {
     this.Tracer = traceObj;
     this.Name   = name;
 }