documentation

This commit is contained in:
andy 2021-10-31 09:19:48 +00:00
parent 1ea964b341
commit f7f553396a
6 changed files with 43 additions and 1 deletions

View File

@ -105,7 +105,7 @@ namespace Selector.CLI
break; break;
case WatcherType.Playlist: case WatcherType.Playlist:
throw new NotImplementedException("Playlist watchers not implemented"); throw new NotImplementedException("Playlist watchers not implemented");
break; // break;
} }
List<IConsumer> consumers = new(); List<IConsumer> consumers = new();

View File

@ -6,6 +6,9 @@ namespace Selector
public class ListeningChangeEventArgs: EventArgs { public class ListeningChangeEventArgs: EventArgs {
public CurrentlyPlayingContext Previous { get; set; } public CurrentlyPlayingContext Previous { get; set; }
public CurrentlyPlayingContext Current { get; set; } public CurrentlyPlayingContext Current { get; set; }
/// <summary>
/// Spotify Username
/// </summary>
public string Username { get; set; } public string Username { get; set; }
PlayerTimeline Timeline { get; set; } PlayerTimeline Timeline { get; set; }

View File

@ -5,6 +5,9 @@ namespace Selector
{ {
public interface IPlayerWatcher: IWatcher public interface IPlayerWatcher: IWatcher
{ {
/// <summary>
/// Track or episode changes
/// </summary>
public event EventHandler<ListeningChangeEventArgs> ItemChange; public event EventHandler<ListeningChangeEventArgs> ItemChange;
public event EventHandler<ListeningChangeEventArgs> AlbumChange; public event EventHandler<ListeningChangeEventArgs> AlbumChange;
public event EventHandler<ListeningChangeEventArgs> ArtistChange; public event EventHandler<ListeningChangeEventArgs> ArtistChange;
@ -15,6 +18,9 @@ namespace Selector
public event EventHandler<ListeningChangeEventArgs> DeviceChange; public event EventHandler<ListeningChangeEventArgs> DeviceChange;
public event EventHandler<ListeningChangeEventArgs> PlayingChange; public event EventHandler<ListeningChangeEventArgs> PlayingChange;
/// <summary>
/// Last retrieved currently playing
/// </summary>
public CurrentlyPlayingContext Live { get; } public CurrentlyPlayingContext Live { get; }
public PlayerTimeline Past { get; } public PlayerTimeline Past { get; }
} }

View File

@ -5,9 +5,23 @@ namespace Selector
{ {
public interface IWatcher public interface IWatcher
{ {
/// <summary>
/// Make single poll action on remote resource
/// </summary>
/// <param name="cancelToken">Token for early cancell</param>
/// <returns>awaitable task</returns>
public Task WatchOne(CancellationToken cancelToken); public Task WatchOne(CancellationToken cancelToken);
/// <summary>
/// Begin periodically polling with interval of PollPeriod
/// </summary>
/// <param name="cancelToken"></param>
/// <returns></returns>
public Task Watch(CancellationToken cancelToken); public Task Watch(CancellationToken cancelToken);
/// <summary>
/// Time interval in ms between polls from Watch()
/// </summary>
/// <value></value>
public int PollPeriod { get; set; } public int PollPeriod { get; set; }
} }
} }

View File

@ -7,10 +7,25 @@ namespace Selector
public interface IWatcherCollection public interface IWatcherCollection
{ {
public bool IsRunning { get; } public bool IsRunning { get; }
/// <summary>
/// Add watcher to collection, will start watcher if collection is running
/// </summary>
/// <param name="watcher">New watcher</param>
public void Add(IWatcher watcher); public void Add(IWatcher watcher);
/// <summary>
/// Add watcher with given consumers to collection, will start watcher if collection is running
/// </summary>
/// <param name="watcher">New watcher</param>
/// <param name="consumers">Consumers to subscribe to new watcher</param>
public void Add(IWatcher watcher, List<IConsumer> consumers); public void Add(IWatcher watcher, List<IConsumer> consumers);
/// <summary>
/// Start watcher collection
/// </summary>
public void Start(); public void Start();
/// <summary>
/// Stop watcher collection
/// </summary>
public void Stop(); public void Stop();
} }
} }

View File

@ -12,6 +12,10 @@ namespace Selector
public IWatcher Watcher { get; set; } public IWatcher Watcher { get; set; }
private List<IConsumer> Consumers { get; set; } = new(); private List<IConsumer> Consumers { get; set; } = new();
public bool IsRunning { get; private set; } public bool IsRunning { get; private set; }
/// <summary>
/// Reference to Watcher.Watch() task when running
/// </summary>
/// <value></value>
public Task Task { get; set; } public Task Task { get; set; }
public CancellationTokenSource TokenSource { get; set; } public CancellationTokenSource TokenSource { get; set; }