aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Kernel
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Common/Kernel')
-rw-r--r--MediaBrowser.Common/Kernel/BaseKernel.cs5
-rw-r--r--MediaBrowser.Common/Kernel/BasePeriodicWebSocketListener.cs24
-rw-r--r--MediaBrowser.Common/Kernel/BaseWebSocketListener.cs98
-rw-r--r--MediaBrowser.Common/Kernel/IWebSocketListener.cs18
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);
+ }
+}