// 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); } }