protected void BroadcastResourceChange(ModelAction action, TResource resource) { var signalRMessage = new SignalRMessage { Name = Resource, Body = new ResourceChangeMessage <TResource>(resource, action) }; _commandExecutor.PublishCommand(new BroadcastSignalRMessage(signalRMessage)); }
private void ExecuteCommands() { try { Timer.Enabled = false; var tasks = _taskManager.GetPending(); _logger.Trace("Pending Tasks: {0}", tasks.Count); foreach (var task in tasks) { _cancellationTokenSource.Token.ThrowIfCancellationRequested(); try { _commandExecutor.PublishCommand(task.TypeName); } catch (Exception e) { _logger.ErrorException("Error occurred while execution task " + task.TypeName, e); } } } finally { if (!_cancellationTokenSource.IsCancellationRequested) { Timer.Enabled = true; } } }
public void Scan(Series series) { var rootFolder = _diskProvider.GetParentFolder(series.Path); if (!_diskProvider.FolderExists(rootFolder)) { _logger.Warn("Series' root folder ({0}) doesn't exist.", rootFolder); _eventAggregator.PublishEvent(new SeriesScanSkippedEvent(series, SeriesScanSkippedReason.RootFolderDoesNotExist)); return; } if (_diskProvider.GetDirectories(rootFolder).Empty()) { _logger.Warn("Series' root folder ({0}) is empty.", rootFolder); return; } _logger.ProgressInfo("Scanning disk for {0}", series.Title); _commandExecutor.PublishCommand(new CleanMediaFileDb(series.Id)); if (!_diskProvider.FolderExists(series.Path)) { if (_configService.CreateEmptySeriesFolders && _diskProvider.FolderExists(rootFolder)) { _logger.Debug("Creating missing series folder: {0}", series.Path); _diskProvider.CreateFolder(series.Path); SetPermissions(series.Path); } else { _logger.Debug("Series folder doesn't exist: {0}", series.Path); } _eventAggregator.PublishEvent(new SeriesScanSkippedEvent(series, SeriesScanSkippedReason.SeriesFolderDoesNotExist)); return; } var videoFilesStopwatch = Stopwatch.StartNew(); var mediaFileList = FilterFiles(series, GetVideoFiles(series.Path)).ToList(); videoFilesStopwatch.Stop(); _logger.Trace("Finished getting episode files for: {0} [{1}]", series, videoFilesStopwatch.Elapsed); var decisionsStopwatch = Stopwatch.StartNew(); var decisions = _importDecisionMaker.GetImportDecisions(mediaFileList, series); decisionsStopwatch.Stop(); _logger.Trace("Import decisions complete for: {0} [{1}]", series, decisionsStopwatch.Elapsed); _importApprovedEpisodes.Import(decisions, false); _logger.Info("Completed scanning disk for {0}", series.Title); _eventAggregator.PublishEvent(new SeriesScannedEvent(series)); }
private void Scan(Series series) { _logger.ProgressInfo("Scanning disk for {0}", series.Title); _commandExecutor.PublishCommand(new CleanMediaFileDb(series.Id)); if (!_diskProvider.FolderExists(series.Path)) { _logger.Debug("Series folder doesn't exist: {0}", series.Path); return; } var mediaFileList = GetVideoFiles(series.Path); var decisions = _importDecisionMaker.GetImportDecisions(mediaFileList, series, false); _importApprovedEpisodes.Import(decisions); }
private void HandleScanEvents(Series series) { if (series.AddOptions == null) { return; } _logger.Info("[{0}] was recently added, performing post-add actions", series.Title); var episodes = _episodeService.GetEpisodeBySeries(series.Id); SetEpisodeMonitoredStatus(series, episodes); if (series.AddOptions.SearchForMissingEpisodes) { _commandExecutor.PublishCommand(new MissingEpisodeSearchCommand(series.Id)); } series.AddOptions = null; _seriesService.RemoveAddOptions(series); }
public void Scan(Series series) { _logger.ProgressInfo("Scanning disk for {0}", series.Title); _commandExecutor.PublishCommand(new CleanMediaFileDb(series.Id)); if (!_diskProvider.FolderExists(series.Path)) { if (_configService.CreateEmptySeriesFolders && _diskProvider.FolderExists(_diskProvider.GetParentFolder(series.Path))) { _logger.Debug("Creating missing series folder: {0}", series.Path); _diskProvider.CreateFolder(series.Path); } else { _logger.Debug("Series folder doesn't exist: {0}", series.Path); } return; } var videoFilesStopwatch = Stopwatch.StartNew(); var mediaFileList = GetVideoFiles(series.Path).ToList(); videoFilesStopwatch.Stop(); _logger.Trace("Finished getting episode files for: {0} [{1}]", series, videoFilesStopwatch.Elapsed); var decisionsStopwatch = Stopwatch.StartNew(); var decisions = _importDecisionMaker.GetImportDecisions(mediaFileList, series, false); decisionsStopwatch.Stop(); _logger.Trace("Import decisions complete for: {0} [{1}]", series, decisionsStopwatch.Elapsed); _importApprovedEpisodes.Import(decisions); _logger.Info("Completed scanning disk for {0}", series.Title); _eventAggregator.PublishEvent(new SeriesScannedEvent(series)); }