Ejemplo n.º 1
0
        private const int MONITORING_INTERVAL = 1000; // ms

        //--//

        static void Main( string[] args )
        {
            ILogger logger = SafeLogger.FromLogger( MonitorLogger.Instance );

            // try and open the GatewayService process
            string monitoringTarget = ConfigurationManager.AppSettings.Get( "MonitoringTarget" );
            string monitoringExecutable = ConfigurationManager.AppSettings.Get( "TargetExecutable" );
            string type = ConfigurationManager.AppSettings.Get( "TargetType" );

            if(String.IsNullOrEmpty( monitoringTarget ) || String.IsNullOrEmpty( monitoringExecutable ))
            {
                logger.LogError( "Error in configuration, cannot start monitoring" );

                return;
            }
            if(String.IsNullOrEmpty( type ))
            {
                logger.LogInfo( "No type specified, defaulting to 'process'" );

                type = AbstractMonitor.ProcessType;

                return;
            }

            AbstractMonitor monitor = null;

            switch(type)
            {
                case AbstractMonitor.ProcessType:
                    monitor = new ProcessMonitor( monitoringExecutable, logger );
                    break;
                case AbstractMonitor.ServiceType:
                    monitor = new ServiceMonitor( monitoringTarget, logger );
                    break;
                default:
                    throw new ArgumentException( String.Format( "Monitoring type {0} is unrecognized", type ) ); 
            }

            monitor.MonitoringInterval = MONITORING_INTERVAL;

            if(monitor.Lock( monitoringTarget ))
            {
                monitor.Monitor();
            }
        }