Example #1
0
        private CoreLogic coreLogic; // the Agent logic instance


        /// <summary>
        /// Initializes a new instance of the class.
        /// </summary>
        public Manager()
        {
            log       = LogStub.Instance;
            coreLogic = null;
            AppDirs   = new AppDirs();
            AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
        }
Example #2
0
        /// <summary>
        /// Starts the service.
        /// </summary>
        public bool StartService()
        {
#if DEBUG
            System.Diagnostics.Debugger.Launch();
#endif

            // load instance configuration
            AppDirs.Init(Assembly.GetExecutingAssembly());
            InstanceConfig instanceConfig = new InstanceConfig();
            Locale.SetCultureToEnglish();

            if (instanceConfig.Load(InstanceConfig.GetConfigFileName(AppDirs.InstanceDir), out string errMsg))
            {
                Locale.SetCulture(instanceConfig.Culture);
                AppDirs.UpdateLogDir(instanceConfig.LogDir);
            }
            else
            {
                Console.WriteLine(errMsg);
                Locale.SetCultureToDefault();
            }

            // initialize log
            log = new LogFile(LogFormat.Full, Path.Combine(AppDirs.LogDir, EngineUtils.LogFileName));
            log.WriteBreak();

            // prepare to start service
            log.WriteAction(Locale.IsRussian ?
                            "Агент {0} запущен" :
                            "Agent {0} started", EngineUtils.AppVersion);

            AgentConfig appConfig = new AgentConfig();

            if (AppDirs.CheckExistence(out errMsg) &&
                LocalizeApp() &&
                appConfig.Load(Path.Combine(AppDirs.ConfigDir, AgentConfig.DefaultFileName), out errMsg))
            {
                // start service
                coreLogic = new CoreLogic(appConfig, AppDirs, log);

                if (coreLogic.StartProcessing())
                {
                    return(true);
                }
            }
            else if (!string.IsNullOrEmpty(errMsg))
            {
                log.WriteError(errMsg);
            }

            log.WriteError(CommonPhrases.ExecutionImpossible);
            return(false);
        }
Example #3
0
        private DateTime heartbeatDT;                                       // the last time a heartbeat was sent to remote Agents


        /// <summary>
        /// Initializes a new instance of the class.
        /// </summary>
        public AgentListener(CoreLogic coreLogic, ListenerOptions listenerOptions,
                             ReverseConnectionOptions reverseConnectionOptions)
            : base(listenerOptions, coreLogic.Log)
        {
            this.coreLogic = coreLogic ?? throw new ArgumentNullException(nameof(coreLogic));
            this.reverseConnectionOptions = reverseConnectionOptions ??
                                            throw new ArgumentNullException(nameof(reverseConnectionOptions));
            clientBundles = new Dictionary <string, ClientBundle>();

            reverseClient           = null;
            reverseClientThread     = null;
            reverseClientTerminated = false;
            heartbeatDT             = DateTime.MinValue;

            CustomFunctions = new HashSet <int>
            {
                FunctionID.DownloadFile,
                FunctionID.UploadFile
            };
        }