diff options
Diffstat (limited to 'MediaBrowser.Common/Kernel')
| -rw-r--r-- | MediaBrowser.Common/Kernel/BaseKernel.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs | 24 | ||||
| -rw-r--r-- | MediaBrowser.Common/Kernel/BaseWebSocketListener.cs | 98 | ||||
| -rw-r--r-- | MediaBrowser.Common/Kernel/IWebSocketListener.cs | 18 |
4 files changed, 35 insertions, 110 deletions
diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs index d172d0a0d..2b3986408 100644 --- a/MediaBrowser.Common/Kernel/BaseKernel.cs +++ b/MediaBrowser.Common/Kernel/BaseKernel.cs @@ -553,11 +553,6 @@ namespace MediaBrowser.Common.Kernel { return Task.Run(() => { - foreach (var listener in WebSocketListeners) - { - listener.Initialize(this); - } - foreach (var task in ScheduledTasks) { task.Initialize(this, Logger); diff --git a/MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs b/MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs index 11ffa8d6c..0f20758d4 100644 --- a/MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs +++ b/MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs @@ -12,11 +12,9 @@ namespace MediaBrowser.Common.Kernel /// <summary> /// Starts sending data over a web socket periodically when a message is received, and then stops when a corresponding stop message is received /// </summary> - /// <typeparam name="TKernelType">The type of the T kernel type.</typeparam> /// <typeparam name="TReturnDataType">The type of the T return data type.</typeparam> /// <typeparam name="TStateType">The type of the T state type.</typeparam> - public abstract class BasePeriodicWebSocketListener<TKernelType, TReturnDataType, TStateType> : BaseWebSocketListener<TKernelType> - where TKernelType : IKernel + public abstract class BasePeriodicWebSocketListener<TReturnDataType, TStateType> : IWebSocketListener, IDisposable where TStateType : class, new() { /// <summary> @@ -47,6 +45,7 @@ namespace MediaBrowser.Common.Kernel /// Initializes a new instance of the <see cref="BasePeriodicWebSocketListener{TStateType}" /> class. /// </summary> /// <param name="logger">The logger.</param> + /// <exception cref="System.ArgumentNullException">logger</exception> protected BasePeriodicWebSocketListener(ILogger logger) { if (logger == null) @@ -58,11 +57,16 @@ namespace MediaBrowser.Common.Kernel } /// <summary> - /// Processes the message internal. + /// The null task result + /// </summary> + protected Task NullTaskResult = Task.FromResult(true); + + /// <summary> + /// Processes the message. /// </summary> /// <param name="message">The message.</param> /// <returns>Task.</returns> - protected override Task ProcessMessageInternal(WebSocketMessageInfo message) + public Task ProcessMessage(WebSocketMessageInfo message) { if (message.MessageType.Equals(Name + "Start", StringComparison.OrdinalIgnoreCase)) { @@ -223,7 +227,7 @@ namespace MediaBrowser.Common.Kernel /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> - protected override void Dispose(bool dispose) + protected virtual void Dispose(bool dispose) { if (dispose) { @@ -235,8 +239,14 @@ namespace MediaBrowser.Common.Kernel } } } + } - base.Dispose(dispose); + /// <summary> + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// </summary> + public void Dispose() + { + Dispose(true); } } } diff --git a/MediaBrowser.Common/Kernel/BaseWebSocketListener.cs b/MediaBrowser.Common/Kernel/BaseWebSocketListener.cs deleted file mode 100644 index 2870403b2..000000000 --- a/MediaBrowser.Common/Kernel/BaseWebSocketListener.cs +++ /dev/null @@ -1,98 +0,0 @@ -using MediaBrowser.Common.Net; -using System; -using System.Threading.Tasks; - -namespace MediaBrowser.Common.Kernel -{ - /// <summary> - /// Represents a class that is notified everytime the server receives a message over a WebSocket - /// </summary> - /// <typeparam name="TKernelType">The type of the T kernel type.</typeparam> - public abstract class BaseWebSocketListener<TKernelType> : IWebSocketListener - where TKernelType : IKernel - { - /// <summary> - /// The null task result - /// </summary> - protected Task NullTaskResult = Task.FromResult(true); - - /// <summary> - /// Gets the kernel. - /// </summary> - /// <value>The kernel.</value> - protected TKernelType Kernel { get; private set; } - - /// <summary> - /// Initializes the specified kernel. - /// </summary> - /// <param name="kernel">The kernel.</param> - public virtual void Initialize(IKernel kernel) - { - if (kernel == null) - { - throw new ArgumentNullException("kernel"); - } - - Kernel = (TKernelType)kernel; - } - - /// <summary> - /// Processes the message. - /// </summary> - /// <param name="message">The message.</param> - /// <returns>Task.</returns> - /// <exception cref="System.ArgumentNullException">message</exception> - public Task ProcessMessage(WebSocketMessageInfo message) - { - if (message == null) - { - throw new ArgumentNullException("message"); - } - - return ProcessMessageInternal(message); - } - - /// <summary> - /// Processes the message internal. - /// </summary> - /// <param name="message">The message.</param> - /// <returns>Task.</returns> - protected abstract Task ProcessMessageInternal(WebSocketMessageInfo message); - - /// <summary> - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// </summary> - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// <summary> - /// Releases unmanaged and - optionally - managed resources. - /// </summary> - /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> - protected virtual void Dispose(bool dispose) - { - } - } - - /// <summary> - /// Interface IWebSocketListener - /// </summary> - public interface IWebSocketListener : IDisposable - { - /// <summary> - /// Processes the message. - /// </summary> - /// <param name="message">The message.</param> - /// <returns>Task.</returns> - Task ProcessMessage(WebSocketMessageInfo message); - - /// <summary> - /// Initializes the specified kernel. - /// </summary> - /// <param name="kernel">The kernel.</param> - void Initialize(IKernel kernel); - } -} diff --git a/MediaBrowser.Common/Kernel/IWebSocketListener.cs b/MediaBrowser.Common/Kernel/IWebSocketListener.cs new file mode 100644 index 000000000..b04bb6885 --- /dev/null +++ b/MediaBrowser.Common/Kernel/IWebSocketListener.cs @@ -0,0 +1,18 @@ +using MediaBrowser.Common.Net; +using System.Threading.Tasks; + +namespace MediaBrowser.Common.Kernel +{ + /// <summary> + ///This is an interface for listening to messages coming through a web socket connection + /// </summary> + public interface IWebSocketListener + { + /// <summary> + /// Processes the message. + /// </summary> + /// <param name="message">The message.</param> + /// <returns>Task.</returns> + Task ProcessMessage(WebSocketMessageInfo message); + } +} |
