private void RunMainLoop(BlockingCollection <IEventMessage> messageQueue, EventBuffer buffer) { bool running = true; while (running) { try { IEventMessage message = messageQueue.Take(); switch (message) { case EventMessage em: ProcessEvent(em.Event, buffer); break; case FlushMessage fm: StartFlush(buffer); break; case FlushUsersMessage fm: if (_userDeduplicator != null) { _userDeduplicator.Flush(); } break; case DiagnosticMessage dm: SendAndResetDiagnostics(buffer); break; case TestSyncMessage tm: WaitForFlushes(); tm.Completed(); break; case ShutdownMessage sm: WaitForFlushes(); running = false; sm.Completed(); break; } } catch (Exception e) { LogHelpers.LogException(_logger, "Unexpected error in event dispatcher thread", e); } } }
private void RunMainLoop(BlockingCollection <IEventMessage> messageQueue, EventBuffer buffer) { bool running = true; while (running) { try { IEventMessage message = messageQueue.Take(); switch (message) { case EventMessage em: ProcessEvent(em.Event, buffer); break; case FlushMessage fm: StartFlush(buffer); break; case FlushUsersMessage fm: if (_userDeduplicator != null) { _userDeduplicator.Flush(); } break; case TestSyncMessage tm: WaitForFlushes(); tm.Completed(); break; case ShutdownMessage sm: WaitForFlushes(); running = false; sm.Completed(); break; } } catch (Exception e) { DefaultEventProcessor.Log.ErrorFormat("Unexpected error in event dispatcher thread: {0}", e, Util.ExceptionMessage(e)); } } }