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; }
/// <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); }
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 }; }