From 8b3e8ad478e96543aa437f5a416e7db48ce90a63 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Fri, 22 Feb 2013 10:16:48 -0500 Subject: created IWebSocketListener --- MediaBrowser.Common/Kernel/BaseKernel.cs | 5 -- .../Kernel/BasePeriodicWebSocketListener.cs | 24 ++++-- .../Kernel/BaseWebSocketListener.cs | 98 ---------------------- MediaBrowser.Common/Kernel/IWebSocketListener.cs | 18 ++++ 4 files changed, 35 insertions(+), 110 deletions(-) delete mode 100644 MediaBrowser.Common/Kernel/BaseWebSocketListener.cs create mode 100644 MediaBrowser.Common/Kernel/IWebSocketListener.cs (limited to 'MediaBrowser.Common/Kernel') diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs index d172d0a0d0..2b39864089 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 11ffa8d6c0..0f20758d47 100644 --- a/MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs +++ b/MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs @@ -12,11 +12,9 @@ namespace MediaBrowser.Common.Kernel /// /// Starts sending data over a web socket periodically when a message is received, and then stops when a corresponding stop message is received /// - /// The type of the T kernel type. /// The type of the T return data type. /// The type of the T state type. - public abstract class BasePeriodicWebSocketListener : BaseWebSocketListener - where TKernelType : IKernel + public abstract class BasePeriodicWebSocketListener : IWebSocketListener, IDisposable where TStateType : class, new() { /// @@ -47,6 +45,7 @@ namespace MediaBrowser.Common.Kernel /// Initializes a new instance of the class. /// /// The logger. + /// logger protected BasePeriodicWebSocketListener(ILogger logger) { if (logger == null) @@ -58,11 +57,16 @@ namespace MediaBrowser.Common.Kernel } /// - /// Processes the message internal. + /// The null task result + /// + protected Task NullTaskResult = Task.FromResult(true); + + /// + /// Processes the message. /// /// The message. /// Task. - 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. /// /// true to release both managed and unmanaged resources; false to release only unmanaged resources. - 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); + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + public void Dispose() + { + Dispose(true); } } } diff --git a/MediaBrowser.Common/Kernel/BaseWebSocketListener.cs b/MediaBrowser.Common/Kernel/BaseWebSocketListener.cs deleted file mode 100644 index 2870403b26..0000000000 --- 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 -{ - /// - /// Represents a class that is notified everytime the server receives a message over a WebSocket - /// - /// The type of the T kernel type. - public abstract class BaseWebSocketListener : IWebSocketListener - where TKernelType : IKernel - { - /// - /// The null task result - /// - protected Task NullTaskResult = Task.FromResult(true); - - /// - /// Gets the kernel. - /// - /// The kernel. - protected TKernelType Kernel { get; private set; } - - /// - /// Initializes the specified kernel. - /// - /// The kernel. - public virtual void Initialize(IKernel kernel) - { - if (kernel == null) - { - throw new ArgumentNullException("kernel"); - } - - Kernel = (TKernelType)kernel; - } - - /// - /// Processes the message. - /// - /// The message. - /// Task. - /// message - public Task ProcessMessage(WebSocketMessageInfo message) - { - if (message == null) - { - throw new ArgumentNullException("message"); - } - - return ProcessMessageInternal(message); - } - - /// - /// Processes the message internal. - /// - /// The message. - /// Task. - protected abstract Task ProcessMessageInternal(WebSocketMessageInfo message); - - /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Releases unmanaged and - optionally - managed resources. - /// - /// true to release both managed and unmanaged resources; false to release only unmanaged resources. - protected virtual void Dispose(bool dispose) - { - } - } - - /// - /// Interface IWebSocketListener - /// - public interface IWebSocketListener : IDisposable - { - /// - /// Processes the message. - /// - /// The message. - /// Task. - Task ProcessMessage(WebSocketMessageInfo message); - - /// - /// Initializes the specified kernel. - /// - /// The kernel. - void Initialize(IKernel kernel); - } -} diff --git a/MediaBrowser.Common/Kernel/IWebSocketListener.cs b/MediaBrowser.Common/Kernel/IWebSocketListener.cs new file mode 100644 index 0000000000..b04bb68851 --- /dev/null +++ b/MediaBrowser.Common/Kernel/IWebSocketListener.cs @@ -0,0 +1,18 @@ +using MediaBrowser.Common.Net; +using System.Threading.Tasks; + +namespace MediaBrowser.Common.Kernel +{ + /// + ///This is an interface for listening to messages coming through a web socket connection + /// + public interface IWebSocketListener + { + /// + /// Processes the message. + /// + /// The message. + /// Task. + Task ProcessMessage(WebSocketMessageInfo message); + } +} -- cgit v1.2.3