public PlaybackService(IFileService fileService, ITrackRepository trackRepository, ITrackStatisticRepository trackStatisticRepository, IEqualizerService equalizerService, IQueuedTrackRepository queuedTrackRepository) { this.fileService = fileService; this.trackRepository = trackRepository; this.trackStatisticRepository = trackStatisticRepository; this.queuedTrackRepository = queuedTrackRepository; this.equalizerService = equalizerService; this.context = SynchronizationContext.Current; this.queueManager = new QueueManager(); // Event handlers this.fileService.TracksImported += async(tracks) => await this.EnqueueAsync(tracks); // Set up timers this.progressTimer.Interval = TimeSpan.FromSeconds(this.progressTimeoutSeconds).TotalMilliseconds; this.progressTimer.Elapsed += new ElapsedEventHandler(this.ProgressTimeoutHandler); this.saveQueuedTracksTimer.Interval = TimeSpan.FromSeconds(this.saveQueuedTracksTimeoutSeconds).TotalMilliseconds; this.saveQueuedTracksTimer.Elapsed += new ElapsedEventHandler(this.SaveQueuedTracksTimeoutHandler); this.savePlaybackCountersTimer.Interval = TimeSpan.FromSeconds(this.savePlaybackCountersTimeoutSeconds).TotalMilliseconds; this.savePlaybackCountersTimer.Elapsed += new ElapsedEventHandler(this.SavePlaybackCountersHandler); this.Initialize(); }
public MetadataService(ICacheService cacheService, IPlaybackService playbackService, ITrackRepository trackRepository, ITrackStatisticRepository trackStatisticRepository, IAlbumRepository albumRepository, IGenreRepository genreRepository, IArtistRepository artistRepository, IFileMetadataFactory metadataFactory) { this.cacheService = cacheService; this.playbackService = playbackService; this.trackStatisticRepository = trackStatisticRepository; this.trackRepository = trackRepository; this.albumRepository = albumRepository; this.genreRepository = genreRepository; this.artistRepository = artistRepository; this.metadataFactory = metadataFactory; this.fileMetadataDictionary = new Dictionary <string, IFileMetadata>(); this.updateFileMetadataTimer = new Timer(); this.updateFileMetadataTimer.Interval = this.updateFileMetadataLongTimeout; this.updateFileMetadataTimer.Elapsed += async(_, __) => await this.UpdateFileMetadataAsync(); this.playbackService.PlaybackStopped += async(_, __) => await this.UpdateFileMetadataAsync(); this.playbackService.PlaybackFailed += async(_, __) => await this.UpdateFileMetadataAsync(); this.playbackService.PlaybackSuccess += async(_, __) => await this.UpdateFileMetadataAsync(); }
public FileService(ICacheService cacheService, ITrackStatisticRepository trackStatisticRepository) { this.cacheService = cacheService; this.trackStatisticRepository = trackStatisticRepository; // Unique identifier which will be used by this instance only to create cached artwork. // This prevents the cleanup function to delete artwork which is in use by this instance. this.instanceGuid = Guid.NewGuid().ToString(); this.files = new List <string>(); this.addFilesTimer = new Timer(); this.addFilesTimer.Interval = this.addFilesTimeout; this.addFilesTimer.Elapsed += AddFilesTimerElapsedHandler; this.DeleteFileArtworkFromCacheAsync(this.instanceGuid); }
public PlaybackService(IFileService fileService, ITrackRepository trackRepository, ITrackStatisticRepository trackStatisticRepository, IEqualizerService equalizerService, IQueuedTrackRepository queuedTrackRepository) { this.fileService = fileService; this.trackRepository = trackRepository; this.trackStatisticRepository = trackStatisticRepository; this.queuedTrackRepository = queuedTrackRepository; this.equalizerService = equalizerService; // Initialize MMDevice using (var mmdeviceEnumerator = new MMDeviceEnumerator()) { using ( var mmdeviceCollection = mmdeviceEnumerator.EnumAudioEndpoints(DataFlow.Render, DeviceState.Active)) { outputDevice = mmdeviceCollection[0]; } } this.context = SynchronizationContext.Current; this.queueManager = new QueueManager(); // Event handlers this.fileService.TracksImported += async(tracks) => await this.EnqueueAsync(tracks); // Set up timers this.progressTimer.Interval = TimeSpan.FromSeconds(this.progressTimeoutSeconds).TotalMilliseconds; this.progressTimer.Elapsed += new ElapsedEventHandler(this.ProgressTimeoutHandler); this.saveQueuedTracksTimer.Interval = TimeSpan.FromSeconds(this.saveQueuedTracksTimeoutSeconds).TotalMilliseconds; this.saveQueuedTracksTimer.Elapsed += new ElapsedEventHandler(this.SaveQueuedTracksTimeoutHandler); this.savePlaybackCountersTimer.Interval = TimeSpan.FromSeconds(this.savePlaybackCountersTimeoutSeconds).TotalMilliseconds; this.savePlaybackCountersTimer.Elapsed += new ElapsedEventHandler(this.SavePlaybackCountersHandler); this.Initialize(); }
public MetadataService(ICacheService cacheService, IPlaybackService playbackService, ITrackRepository trackRepository, ITrackStatisticRepository trackStatisticRepository, IFileMetadataFactory metadataFactory, IContainerProvider container) { this.cacheService = cacheService; this.playbackService = playbackService; this.trackStatisticRepository = trackStatisticRepository; this.trackRepository = trackRepository; this.metadataFactory = metadataFactory; this.container = container; this.fileMetadataDictionary = new Dictionary <string, IFileMetadata>(); this.updateFileMetadataTimer = new Timer(); this.updateFileMetadataTimer.Interval = this.updateFileMetadataLongTimeout; this.updateFileMetadataTimer.Elapsed += async(_, __) => await this.UpdateFileMetadataAsync(); this.playbackService.PlaybackStopped += async(_, __) => await this.UpdateFileMetadataAsync(); this.playbackService.PlaybackFailed += async(_, __) => await this.UpdateFileMetadataAsync(); this.playbackService.PlaybackSuccess += async(_, __) => await this.UpdateFileMetadataAsync(); }