private void SessionStop() { if (m_threadSession != null) { try { m_threadSession.SetReset("CANCEL"); // New 2.11.10 m_threadSession.RequestStopSync(); m_threadSession = null; } catch (Exception e) { Logs.Log(LogType.Fatal, e); } OnSessionStop(); WaitMessageClear(); Logs.Log(LogType.InfoImportant, Messages.SessionStop); } }
private void SessionStart() { try { Logs.Log(LogType.Info, Messages.SessionStart); Engine.Instance.WaitMessageSet(Messages.CheckingEnvironment, true); if (CheckEnvironment() == false) { WaitMessageClear(); } else { // Check Driver if (Engine.Instance.Storage.GetBool("advanced.skip_tun_detect") == false) { if (Platform.Instance.GetDriverAvailable() == "") { if (Platform.Instance.CanInstallDriver()) { Engine.Instance.WaitMessageSet(Messages.OsDriverInstall, false); Logs.Log(LogType.InfoImportant, Messages.OsDriverInstall); Platform.Instance.InstallDriver(); if (Platform.Instance.GetDriverAvailable() == "") throw new Exception(Messages.OsDriverFailed); } else throw new Exception(Messages.OsDriverCannotInstall); } } if (m_threadSession != null) throw new Exception("Daemon already running."); if (ProvidersManager.NeedUpdate(true)) { Engine.Instance.WaitMessageSet(Messages.RetrievingManifest, true); Logs.Log(LogType.Info, Messages.RetrievingManifest); string result = Engine.WaitManifestUpdate(); if (result != "") { if (ProvidersManager.NeedUpdate(false)) { throw new Exception(result); } else { Logs.Log(LogType.Warning, Messages.ManifestFailedContinue); } } } OnSessionStart(); if (NextServer == null) { if (Engine.Storage.GetBool("servers.startlast")) NextServer = Engine.PickServer(Engine.Storage.Get("servers.last")); } m_threadSession = new Threads.Session(); } } catch (Exception e) { Logs.Log(LogType.Fatal, e); WaitMessageClear(); if (Engine.Instance.Storage.GetBool("batch")) { Engine.Instance.RequestStop(); } } }