Example #1
0
        private void buttonStop_Click(object sender, EventArgs e)
        {
            buttonStop.Enabled = false;
            m_utilities.StopMonitor();

            foreach (AccountPortfolio account in comboBoxAccount.Items)
            {
                account.OnRefresh -= Account_OnRefresh;
            }
            comboBoxAccount.DataSource = null;

            EnableControls();
        }
Example #2
0
        public void Run()
        {
            // initialize logging
            log4net.Config.XmlConfigurator.Configure();
            PositionMonitorUtilities.OnInfo           += Utilities_OnInfo;
            PositionMonitorUtilities.OnError          += Utilities_OnError;
            PositionMonitorUtilities.OnDebug          += Utilities_OnInfo;
            PositionMonitorUtilities.OnMonitorStopped += Utilities_OnMonitorStopped;

            if (!GetDatabaseConnections())
            {
                Console.WriteLine("Failed to connect to Hugo");
                return;
            }

            if (!PositionMonitorUtilities.Init(m_hugoConnection))
            {
                Console.WriteLine("Failed to initialize PositionMonitorUtilities");
                return;
            }
            Console.WriteLine("PositionMonitorUtilities initiallized");

            if (!PositionMonitorUtilities.StartMonitor())
            {
                Console.WriteLine("Failed to start monitor");
                return;
            }
            Console.WriteLine("Monitor started");

            using (m_monitor = new ServiceHost(typeof(PositionMonitor)))
            {
                m_monitor.Open();
                Console.WriteLine("Host is running - press any key to stop host");

                Console.ReadKey();
                m_monitor.Close();
                Console.WriteLine("Host is stopped");

                PositionMonitorUtilities.StopMonitor();
                Console.WriteLine("Monitor stopped");
            }
            m_monitor = null;
        }
Example #3
0
        public bool Run()
        {
            m_bTaskFailed = true;
            try
            {
                // initialize logging
                log4net.Config.XmlConfigurator.Configure();
                TaskUtilities.OnInfo               += new LoggingEventHandler(Utilities_OnInfo);
                TaskUtilities.OnError              += new LoggingEventHandler(Utilities_OnError);
                LoggingUtilities.OnInfo            += new LoggingEventHandler(Utilities_OnDebug); // SQL Commands go to Debug log
                LoggingUtilities.OnError           += new LoggingEventHandler(Utilities_OnError);
                m_positionMonitor.OnInfo           += new LoggingEventHandler(Utilities_OnInfo);
                m_positionMonitor.OnError          += new LoggingEventHandler(Utilities_OnError);
                m_positionMonitor.OnDebug          += new LoggingEventHandler(Utilities_OnDebug);
                m_positionMonitor.OnMonitorStopped += new ServiceStoppedEventHandler(Utilities_OnMonitorStopped);

                if (Initialize())
                {
                    using (var serviceHost = new ServiceHost(typeof(SentoniService)))
                    {
                        m_positionMonitor.QuoteServerHost = m_parms.QuoteServerHost.Trim();
                        m_positionMonitor.QuoteServerPort = m_parms.QuoteServerPort;
                        m_positionMonitor.RefreshMs       = m_parms.RefreshMs;
                        m_positionMonitor.AccountLimit    = m_parms.AccountLimit;

                        if (m_positionMonitor.StartMonitor())
                        {
                            bool quoteServerIsUp = m_positionMonitor.IsUsingQuoteFeed;
                            foreach (AccountPortfolio account in m_positionMonitor.GetAllAccountPortfolios())
                            {
                                OnInfo("Starting account " + account.AccountName);
                                account.Start();

                                // connect to quote server - if is down, don't bother trying with subsequent accounts
                                if (quoteServerIsUp)
                                {
                                    quoteServerIsUp = account.StartSubscriber();
                                }
                            }

                            var dataProvider = new DataProvider(m_positionMonitor, this);
                            SentoniService.Provider            = dataProvider;
                            m_positionMonitor.SnapshotProvider = dataProvider;
                            serviceHost.Open();
                            OnInfo("Host started");

                            m_bTaskFailed = false;  // set up was successful - we now wait for the timer to expire or for a post from an event handler
                            m_bWaiting    = true;
                            bool timedOut = WaitForCompletion();
                            m_bWaiting = false;

                            serviceHost.Close();
                            OnInfo("Host closed");
                            m_bTaskFailed = false;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                m_bTaskFailed = true;
                OnError("Error in Run method", ex, true);
            }
            finally
            {
                m_positionMonitor.StopMonitor();

                if (m_bTaskStarted)
                {
                    m_bTaskStarted = !EndTask(m_parms.TaskName, !m_bTaskFailed);
                }
            }
            return(!m_bTaskFailed);
        }