Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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));
                }
            }
        }