1. OnStart
1.1. MainThread
1.1.1. DAL.Instance.GetDBVersion()
1.1.2. m_writer = new DBWriterService(threadCount)
1.1.2.1. initiate services
1.1.2.1.1. m_incomeQueue = new Queue<AbsMsg>(); m_incomeEventQueue = new Queue<CIVEventLogEntry>(); m_OrphanMonitors = new OrphanMonitors();
1.1.2.2. OnStart = this.StartQAnalyze();
1.1.2.2.1. m_oTaskMonitor = new Task[m_threadCount];
1.1.2.2.2. Action<object> act = new Action<object>(QThread); this.HandleQ(threadID); this.HandleQEvent(); DAL.Instance.UpdConnStatus(evt.MonitorID, evt.Status);
1.1.3. sRawPath = ConfigManager.Instance["DriverRawPath"].ToString()
1.1.4. CreateFolderMons
1.1.5. new CollectorService(bUseAutoDisconnect, bSaveRaw, sRawPath);
1.1.5.1. OnStart: m_okeppAlive = new Task(new Action(KeepAliveThread));
1.1.5.1.1. string serverName = Environment.MachineName; m_statusLockIsFree.Reset(); DAL.Instance.UpdateKeepAliveAndGetRunStatus(serverName, 1);
1.1.5.2. m_oTaskMonitor = new Task(new Action(WorkThread));
1.1.5.2.1. this.ReloadMonitorList(cpyCurrStatus.DriversGroup); this.InitDrivers(cpyCurrStatus.DriversGroup); this.ConnectDrivers(true); this.ConnectDrivers(false);
1.1.5.3. OnStop:DisconnectDrivers(true);
1.1.6. m_collector.OnDataReady += Collector_OnDataReady; m_collector.OnMonitorInfo += Collector_OnMonitorInfo; m_collector.OnEventLog += Collector_OnEventLog;
1.1.6.1. Collector_OnEventLog m_writer.EnqueueEvent(info);
1.1.6.2. Collector_OnMonitorInfo DAL.Instance.UpdDriverMonitorInfo(info.DrvID, info.GetJson());
1.1.6.3. Collector_OnDataReady m_writer.Enqueue(msg);