From 767cdc1f6f6a63ce997fc9476911e2c361f9d402 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Wed, 20 Feb 2013 20:33:05 -0500 Subject: Pushing missing changes --- .../Kernel/BaseWebSocketListener.cs | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 MediaBrowser.Common/Kernel/BaseWebSocketListener.cs (limited to 'MediaBrowser.Common/Kernel/BaseWebSocketListener.cs') diff --git a/MediaBrowser.Common/Kernel/BaseWebSocketListener.cs b/MediaBrowser.Common/Kernel/BaseWebSocketListener.cs new file mode 100644 index 000000000..2870403b2 --- /dev/null +++ b/MediaBrowser.Common/Kernel/BaseWebSocketListener.cs @@ -0,0 +1,98 @@ +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); + } +} -- cgit v1.2.3