protected override void InitTvCore() { _tvServiceThread = new TvServiceThread(Environment.GetCommandLineArgs()[0]); if (!InitializeGentle()) { DeInit(); return; } FixupServer(); Start(); if (!_tvServiceThread.InitializedEvent.WaitOne(MAX_WAIT_MS)) { ServiceRegistration.Get <ILogger>().Error("SlimTvService: Failed to start TV service thread within {0} seconds.", MAX_WAIT_MS / 1000); } InitializeTVE(); // Handle events from TvEngine if (!RegisterEvents()) { ServiceRegistration.Get <ILogger>().Error("SlimTvService: Failed to register events. This happens only if startup failed. Stopping plugin now."); DeInit(); return; } _ = CleanUpRecordingsAsync(); }
private void InitAsync(object sender, ElapsedEventArgs args) { ISQLDatabase database; lock (_timer) { database = ServiceRegistration.Get <ISQLDatabase>(false); if (database == null) { return; } _timer.Close(); _timer.Dispose(); } using (var transaction = database.BeginTransaction()) if (transaction.Connection.GetCloneFactory(TVDB_NAME, out _dbProviderFactory, out _cloneConnection)) { EntityFrameworkHelper.AssureKnownFactory(_dbProviderFactory); // Register our factory to create new cloned connections ObjectContextManager.SetDbConnectionCreator(ClonedConnectionFactory); } IntegrationProviderHelper.Register(@"Plugins\SlimTv.Service", @"Plugins\SlimTv.Service\castle.config"); _tvServiceThread = new TvServiceThread(Environment.GetCommandLineArgs()[0]); _tvServiceThread.Start(); }
public bool DeInit() { if (_tvServiceThread != null) { _tvServiceThread.Stop(MAX_WAIT_MS); _tvServiceThread = null; } return(true); }
public bool DeInit() { #if TVE3 Stop(MAX_WAIT_MS); #else if (_tvServiceThread != null) { _tvServiceThread.Stop(MAX_WAIT_MS); _tvServiceThread = null; } #endif return(true); }
public void Stop(int maxWaitMsecs) { if (_serviceThread != null && _serviceThread.IsAlive) { bool joined = _serviceThread.Join(maxWaitMsecs); if (!joined) { _serviceThread.Abort(); _serviceThread.Join(); } _tvServiceThread = null; } }
public override bool DeInit() { if (_serviceThread != null && _serviceThread.IsAlive) { bool joined = _serviceThread.Join(MAX_WAIT_MS); if (!joined) { _serviceThread.Abort(); _serviceThread.Join(); } _tvServiceThread = null; } return(true); }
public override bool DeInit() { var thread = _serviceThread; _tvServiceThread = null; if (thread != null && thread.IsAlive) { try { bool joined = thread.Join(MAX_WAIT_MS); if (!joined) { thread.Abort(); thread.Join(); } } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Error("Failed to deinit TVEngine", ex); } } return(true); }
protected override void InitTvCore() { _tvServiceThread = new TvServiceThread(Environment.GetCommandLineArgs()[0]); _tvServiceThread.Start(); if (!_tvServiceThread.InitializedEvent.WaitOne(MAX_WAIT_MS)) { ServiceRegistration.Get<ILogger>().Error("SlimTvService: Failed to start TV service thread within {0} seconds.", MAX_WAIT_MS / 1000); } // Handle events from TvEngine if (!RegisterEvents()) { ServiceRegistration.Get<ILogger>().Error("SlimTvService: Failed to register events. This happens only if startup failed. Stopping plugin now."); DeInit(); } }
public override bool DeInit() { if (_tvServiceThread != null) { _tvServiceThread.Stop(MAX_WAIT_MS); _tvServiceThread = null; } return true; }
private void InitAsync(object sender, ElapsedEventArgs args) { ISQLDatabase database; lock (_timer) { database = ServiceRegistration.Get<ISQLDatabase>(false); if (database == null) return; _timer.Close(); _timer.Dispose(); } using (var transaction = database.BeginTransaction()) if (transaction.Connection.GetCloneFactory(TVDB_NAME, out _dbProviderFactory, out _cloneConnection)) { EntityFrameworkHelper.AssureKnownFactory(_dbProviderFactory); // Register our factory to create new cloned connections ObjectContextManager.SetDbConnectionCreator(ClonedConnectionFactory); } IntegrationProviderHelper.Register(@"Plugins\SlimTv.Service", @"Plugins\SlimTv.Service\castle.config"); _tvServiceThread = new TvServiceThread(Environment.GetCommandLineArgs()[0]); _tvServiceThread.Start(); }
private void InitAsync(object sender, ElapsedEventArgs args) { ISQLDatabase database; lock (_timer) { database = ServiceRegistration.Get <ISQLDatabase>(false); if (database == null) { return; } _timer.Close(); _timer.Dispose(); } using (var transaction = database.BeginTransaction()) { // Prepare TV database if required. PrepareTvDatabase(transaction); #if !TVE3 if (transaction.Connection.GetCloneFactory(TVDB_NAME, out _dbProviderFactory, out _cloneConnection)) { EntityFrameworkHelper.AssureKnownFactory(_dbProviderFactory); // Register our factory to create new cloned connections ObjectContextManager.SetDbConnectionCreator(ClonedConnectionFactory); } #endif } // TODO: Get this from project config somehow #if TVE3 string servicename = "SlimTv.Service3"; #else string servicename = "SlimTv.Service35"; #endif IntegrationProviderHelper.Register(@"Plugins\" + servicename, "Plugins\\" + servicename + "\\castle.config"); var pm = GlobalServiceProvider.Instance.Get <IIntegrationProvider>().PathManager; // Needs to be done after the IntegrationProvider is registered, so the TVCORE folder is defined. PrepareProgramData(); _tvServiceThread = new TvServiceThread(Environment.GetCommandLineArgs()[0]); #if TVE3 InitializeGentle(); Start(); #else _tvServiceThread.Start(); #endif if (!_tvServiceThread.InitializedEvent.WaitOne(MAX_WAIT_MS)) { ServiceRegistration.Get <ILogger>().Error("SlimTvService: Failed to start TV service thread within {0} seconds.", MAX_WAIT_MS / 1000); } #if TVE3 InitializeTVE(); #endif // Handle events from TvEngine if (!RegisterEvents()) { ServiceRegistration.Get <ILogger>().Error("SlimTvService: Failed to register events. This happens only if startup failed. Stopping plugin now."); DeInit(); } }