예제 #1
0
        /// <summary>
        /// Does the actual forwarding of the events.
        /// </summary>
        private void ForwardEvents()
        {
            _IsRunning = true;

            try
            {
                // Keep looping as long as the MTA is running.
                while (!_IsStopping)
                {
                    IList <MantaEvent> events = null;
                    // Get events for forwarding.
                    try
                    {
                        events = EventDB.GetEventsForForwarding(10);
                    }
                    catch (SqlNullValueException)
                    {
                        events = new List <MantaEvent>();
                    }


                    if (events.Count == 0)
                    {
                        // No events to forward sleep for a second and look again.
                        Thread.Sleep(1000);
                        continue;
                    }
                    else
                    {
                        // Found events to forward, create and run Tasks to forward.
                        for (var i = 0; i < events.Count; i++)
                        {
                            ForwardEventAsync(events[i]).Wait();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // Something went wrong.
                Logging.Error("EventHttpForwarder encountered an error.", ex);
                MantaCoreEvents.InvokeMantaCoreStopping();
                Environment.Exit(-1);
            }

            _IsRunning = false;
        }