// Token: 0x06000172 RID: 370 RVA: 0x0000A468 File Offset: 0x00008668
        private static void FlushAfterTimeout()
        {
            ExTraceGlobals.ServiceTracer.TraceError((long)EHALogSearchComponent.agentLogMonitor.GetHashCode(), "EHALogSearchComponent FlushAfterTimeout() invoked");
            if (EHALogSearchComponent.journalMigrationJobs == null || EHALogSearchComponent.journalMigrationJobs.Count <= 0)
            {
                ExTraceGlobals.ServiceTracer.TraceError((long)EHALogSearchComponent.agentLogMonitor.GetHashCode(), "EHALogSearchComponent FlushAfterTimeout() journal migration jobs is empty.");
                return;
            }
            ExTraceGlobals.ServiceTracer.TraceError((long)EHALogSearchComponent.agentLogMonitor.GetHashCode(), "EHALogSearchComponent FlushAfterTimeout() journal migration jobs exist.");
            List <EHALogSearchComponent.DCSiteJob> list = new List <EHALogSearchComponent.DCSiteJob>();

            lock (EHALogSearchComponent.agentLogMonitor)
            {
                foreach (KeyValuePair <string, EHALogSearchComponent.JournalMessageSource> keyValuePair in EHALogSearchComponent.journalMigrationJobs)
                {
                    string key = keyValuePair.Key;
                    EHALogSearchComponent.JournalMessageSource value = keyValuePair.Value;
                    string    replyFromAddress       = value.ReplyFromAddress;
                    Guid      externalOrganizationId = value.ExternalOrganizationId;
                    Hashtable hashtable = null;
                    ExTraceGlobals.ServiceTracer.TraceError <string>((long)EHALogSearchComponent.agentLogMonitor.GetHashCode(), "EHALogSearchComponent FlushAfterTimeout() Analyzing EhaJournalSite {0}.", value.ToString());
                    DateTime t      = value.BatchStartTime.AddSeconds(value.ResponseTimeout);
                    DateTime utcNow = DateTime.UtcNow;
                    if (t < utcNow)
                    {
                        hashtable = value.ReceivedMessageIds;
                        value.ReceivedMessageIds = new Hashtable();
                        value.BatchStartTime     = DateTime.UtcNow;
                        ExTraceGlobals.ServiceTracer.TraceError <string, string, DateTime>((long)EHALogSearchComponent.agentLogMonitor.GetHashCode(), "EHALogSearchComponent FlushAfterTimeout() Timeout is hit , flush for EhaJournalSite {0}, ExpiryTime {1}, TimeNow {2}", value.ToString(), t.ToString(), utcNow);
                    }
                    else
                    {
                        ExTraceGlobals.ServiceTracer.TraceError <string, string, DateTime>((long)EHALogSearchComponent.agentLogMonitor.GetHashCode(), "EHALogSearchComponent FlushAfterTimeout() Timeout not hit, dont flush yet for EhaJournalSite {0}, ExpiryTime {1}, TimeNow {2}", value.ToString(), t.ToString(), utcNow);
                    }
                    if (hashtable != null)
                    {
                        EHALogSearchComponent.DCSiteJob item = new EHALogSearchComponent.DCSiteJob(key, replyFromAddress, externalOrganizationId, hashtable);
                        list.Add(item);
                        ExTraceGlobals.ServiceTracer.TraceError <string, string, DateTime>((long)EHALogSearchComponent.agentLogMonitor.GetHashCode(), "EHALogSearchComponent FlushAfterTimeout() Timeout is hit, flushing mimemessages for EhaJournalSite {0}, ExpiryTime {1}, TimeNow {2}", value.ToString(), t.ToString(), utcNow);
                    }
                }
            }
            foreach (EHALogSearchComponent.DCSiteJob dcsiteJob in list)
            {
                if (dcsiteJob.MimeMessages.Count > 0)
                {
                    EHALogSearchComponent.PrepareEmailMessage(dcsiteJob.SenderAddress, dcsiteJob.RecipientAddress, dcsiteJob.ExternalOrganizationId, dcsiteJob.MimeMessages);
                }
            }
        }
        // Token: 0x06000171 RID: 369 RVA: 0x0000A2B0 File Offset: 0x000084B0
        private static void AddMessageCheckSend(string senderAddress, string recipientAddress, string messageId, Guid externalOrganizationId, uint batchSize, uint timeoutSeconds, Microsoft.Exchange.HostedServices.Archive.MetaReplication.ReplicationStatus status)
        {
            EHALogSearchComponent.JournalMessageSource journalMessageSource;
            if (!EHALogSearchComponent.journalMigrationJobs.TryGetValue(senderAddress, out journalMessageSource))
            {
                journalMessageSource = new EHALogSearchComponent.JournalMessageSource(recipientAddress, batchSize, timeoutSeconds, DateTime.UtcNow);
                EHALogSearchComponent.journalMigrationJobs.Add(senderAddress, journalMessageSource);
            }
            else
            {
                if (string.Compare(journalMessageSource.ReplyFromAddress, recipientAddress, StringComparison.OrdinalIgnoreCase) != 0)
                {
                    journalMessageSource.ReplyFromAddress = recipientAddress;
                }
                if (journalMessageSource.MaxResponses != batchSize)
                {
                    journalMessageSource.MaxResponses = batchSize;
                }
                if (journalMessageSource.ResponseTimeout != timeoutSeconds)
                {
                    journalMessageSource.ResponseTimeout = timeoutSeconds;
                }
                if (journalMessageSource.ExternalOrganizationId != externalOrganizationId)
                {
                    journalMessageSource.ExternalOrganizationId = externalOrganizationId;
                }
            }
            if (!journalMessageSource.ReceivedMessageIds.ContainsKey(messageId))
            {
                MessageInsertedKey messageInsertedKey = new MessageInsertedKey();
                byte[]             array = (from b in messageId.Split(new char[]
                {
                    '-'
                })
                                            select byte.Parse(b, NumberStyles.HexNumber)).ToArray <byte>();
                messageInsertedKey.MessageId = array;
                EHALogSearchComponent.ConfirmationWrapper value = new EHALogSearchComponent.ConfirmationWrapper(new MessageInsertedConfirmation
                {
                    Key            = messageInsertedKey,
                    CustomerId     = ((((int)array[0] << 8 | (int)array[1]) << 8 | (int)array[2]) << 8 | (int)array[3]),
                    Status         = status,
                    DatacenterName = "EOA"
                }, messageId, status.ToString());
                journalMessageSource.ReceivedMessageIds.Add(messageId, value);
            }
            Hashtable hashtable = null;

            lock (EHALogSearchComponent.agentLogMonitor)
            {
                if ((long)journalMessageSource.ReceivedMessageIds.Count >= (long)((ulong)journalMessageSource.MaxResponses))
                {
                    hashtable = journalMessageSource.ReceivedMessageIds;
                    journalMessageSource.ReceivedMessageIds = new Hashtable();
                    journalMessageSource.BatchStartTime     = DateTime.UtcNow;
                }
            }
            if (hashtable != null)
            {
                EHALogSearchComponent.PrepareEmailMessage(senderAddress, recipientAddress, externalOrganizationId, hashtable);
            }
        }