浏览代码

separate event managers

Luke Pulverenti 11 年之前
父节点
当前提交
da943ebe99

+ 22 - 8
MediaBrowser.Api/Dlna/DlnaServerService.cs

@@ -50,8 +50,14 @@ namespace MediaBrowser.Api.Dlna
     }
 
     [Route("/Dlna/contentdirectory/{UuId}/events", Summary = "Processes an event subscription request")]
+    public class ProcessContentDirectoryEventRequest
+    {
+        [ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
+        public string UuId { get; set; }
+    }
+
     [Route("/Dlna/connectionmanager/{UuId}/events", Summary = "Processes an event subscription request")]
-    public class ProcessEventRequest
+    public class ProcessConnectionManagerEventRequest
     {
         [ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
         public string UuId { get; set; }
@@ -68,14 +74,12 @@ namespace MediaBrowser.Api.Dlna
     {
         private readonly IDlnaManager _dlnaManager;
         private readonly IContentDirectory _contentDirectory;
-        private readonly IEventManager _eventManager;
         private readonly IConnectionManager _connectionManager;
 
-        public DlnaServerService(IDlnaManager dlnaManager, IContentDirectory contentDirectory, IEventManager eventManager, IConnectionManager connectionManager)
+        public DlnaServerService(IDlnaManager dlnaManager, IContentDirectory contentDirectory, IConnectionManager connectionManager)
         {
             _dlnaManager = dlnaManager;
             _contentDirectory = contentDirectory;
-            _eventManager = eventManager;
             _connectionManager = connectionManager;
         }
 
@@ -158,7 +162,17 @@ namespace MediaBrowser.Api.Dlna
             }
         }
 
-        public object Any(ProcessEventRequest request)
+        public object Any(ProcessContentDirectoryEventRequest request)
+        {
+            return ProcessEventRequest(_contentDirectory);
+        }
+
+        public object Any(ProcessConnectionManagerEventRequest request)
+        {
+            return ProcessEventRequest(_connectionManager);
+        }
+
+        private object ProcessEventRequest(IEventManager eventManager)
         {
             var subscriptionId = GetHeader("SID");
             var notificationType = GetHeader("NT");
@@ -171,13 +185,13 @@ namespace MediaBrowser.Api.Dlna
             {
                 if (string.IsNullOrEmpty(notificationType))
                 {
-                    return GetSubscriptionResponse(_eventManager.RenewEventSubscription(subscriptionId, timeout));
+                    return GetSubscriptionResponse(eventManager.RenewEventSubscription(subscriptionId, timeout));
                 }
 
-                return GetSubscriptionResponse(_eventManager.CreateEventSubscription(notificationType, timeout, callback));
+                return GetSubscriptionResponse(eventManager.CreateEventSubscription(notificationType, timeout, callback));
             }
 
-            return GetSubscriptionResponse(_eventManager.CancelEventSubscription(subscriptionId));
+            return GetSubscriptionResponse(eventManager.CancelEventSubscription(subscriptionId));
         }
 
         private object GetSubscriptionResponse(EventSubscriptionResponse response)

+ 1 - 1
MediaBrowser.Controller/Dlna/IConnectionManager.cs

@@ -1,7 +1,7 @@
 
 namespace MediaBrowser.Controller.Dlna
 {
-    public interface IConnectionManager : IUpnpService
+    public interface IConnectionManager : IEventManager, IUpnpService
     {
     }
 }

+ 1 - 1
MediaBrowser.Controller/Dlna/IContentDirectory.cs

@@ -1,7 +1,7 @@
 
 namespace MediaBrowser.Controller.Dlna
 {
-    public interface IContentDirectory : IUpnpService
+    public interface IContentDirectory : IEventManager, IUpnpService
     {
     }
 }

+ 1 - 19
MediaBrowser.Controller/Dlna/IEventManager.cs

@@ -1,7 +1,4 @@
-using MediaBrowser.Model.Dlna;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-
+
 namespace MediaBrowser.Controller.Dlna
 {
     public interface IEventManager
@@ -28,20 +25,5 @@ namespace MediaBrowser.Controller.Dlna
         /// <param name="callbackUrl">The callback URL.</param>
         /// <returns>EventSubscriptionResponse.</returns>
         EventSubscriptionResponse CreateEventSubscription(string notificationType, int? timeoutSeconds, string callbackUrl);
-
-        /// <summary>
-        /// Gets the subscription.
-        /// </summary>
-        /// <param name="id">The identifier.</param>
-        /// <returns>EventSubscription.</returns>
-        EventSubscription GetSubscription(string id);
-
-        /// <summary>
-        /// Triggers the event.
-        /// </summary>
-        /// <param name="notificationType">Type of the notification.</param>
-        /// <param name="stateVariables">The state variables.</param>
-        /// <returns>Task.</returns>
-        Task TriggerEvent(string notificationType, IDictionary<string,string> stateVariables);
     }
 }

+ 7 - 4
MediaBrowser.Dlna/ConnectionManager/ConnectionManager.cs

@@ -1,21 +1,24 @@
-using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Common.Net;
+using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Dlna;
+using MediaBrowser.Dlna.Service;
 using MediaBrowser.Model.Logging;
 using System.Collections.Generic;
 
 namespace MediaBrowser.Dlna.ConnectionManager
 {
-    public class ConnectionManager : IConnectionManager
+    public class ConnectionManager : BaseService, IConnectionManager
     {
         private readonly IDlnaManager _dlna;
         private readonly ILogger _logger;
         private readonly IServerConfigurationManager _config;
 
-        public ConnectionManager(IDlnaManager dlna, ILogManager logManager, IServerConfigurationManager config)
+        public ConnectionManager(IDlnaManager dlna, IServerConfigurationManager config, ILogger logger, IHttpClient httpClient)
+            : base(logger, httpClient)
         {
             _dlna = dlna;
             _config = config;
-            _logger = logManager.GetLogger("UpnpConnectionManager");
+            _logger = logger;
         }
 
         public string GetServiceXml(IDictionary<string, string> headers)

+ 8 - 10
MediaBrowser.Dlna/ContentDirectory/ContentDirectory.cs

@@ -1,9 +1,11 @@
-using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Common.Net;
+using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Dlna;
 using MediaBrowser.Controller.Drawing;
 using MediaBrowser.Controller.Dto;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Dlna.Service;
 using MediaBrowser.Model.Dlna;
 using MediaBrowser.Model.Logging;
 using System;
@@ -12,9 +14,8 @@ using System.Linq;
 
 namespace MediaBrowser.Dlna.ContentDirectory
 {
-    public class ContentDirectory : IContentDirectory, IDisposable
+    public class ContentDirectory : BaseService, IContentDirectory, IDisposable
     {
-        private readonly ILogger _logger;
         private readonly ILibraryManager _libraryManager;
         private readonly IDtoService _dtoService;
         private readonly IImageProcessor _imageProcessor;
@@ -23,17 +24,16 @@ namespace MediaBrowser.Dlna.ContentDirectory
         private readonly IServerConfigurationManager _config;
         private readonly IUserManager _userManager;
 
-        private readonly IEventManager _eventManager;
-
         public ContentDirectory(IDlnaManager dlna,
             IUserDataManager userDataManager,
             IImageProcessor imageProcessor,
             IDtoService dtoService,
             ILibraryManager libraryManager,
-            ILogManager logManager,
             IServerConfigurationManager config,
             IUserManager userManager,
-            IEventManager eventManager)
+            ILogger logger,
+            IHttpClient httpClient)
+            : base(logger, httpClient)
         {
             _dlna = dlna;
             _userDataManager = userDataManager;
@@ -42,8 +42,6 @@ namespace MediaBrowser.Dlna.ContentDirectory
             _libraryManager = libraryManager;
             _config = config;
             _userManager = userManager;
-            _eventManager = eventManager;
-            _logger = logManager.GetLogger("UpnpContentDirectory");
         }
 
         private int SystemUpdateId
@@ -71,7 +69,7 @@ namespace MediaBrowser.Dlna.ContentDirectory
             var user = GetUser(profile);
 
             return new ControlHandler(
-                _logger,
+                Logger,
                 _libraryManager,
                 profile,
                 serverAddress,

+ 2 - 2
MediaBrowser.Dlna/Eventing/EventManager.cs

@@ -21,10 +21,10 @@ namespace MediaBrowser.Dlna.Eventing
         private readonly ILogger _logger;
         private readonly IHttpClient _httpClient;
 
-        public EventManager(ILogManager logManager, IHttpClient httpClient)
+        public EventManager(ILogger logger, IHttpClient httpClient)
         {
             _httpClient = httpClient;
-            _logger = logManager.GetLogger("DlnaEventManager");
+            _logger = logger;
         }
 
         public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, int? timeoutSeconds)

+ 1 - 0
MediaBrowser.Dlna/MediaBrowser.Dlna.csproj

@@ -88,6 +88,7 @@
     <Compile Include="ContentDirectory\ServiceActionListBuilder.cs" />
     <Compile Include="ContentDirectory\ContentDirectoryXmlBuilder.cs" />
     <Compile Include="Service\BaseControlHandler.cs" />
+    <Compile Include="Service\BaseService.cs" />
     <Compile Include="Service\ControlErrorHandler.cs" />
     <Compile Include="Service\ServiceXmlBuilder.cs" />
     <Compile Include="Ssdp\Datagram.cs" />

+ 37 - 0
MediaBrowser.Dlna/Service/BaseService.cs

@@ -0,0 +1,37 @@
+using MediaBrowser.Common.Net;
+using MediaBrowser.Controller.Dlna;
+using MediaBrowser.Dlna.Eventing;
+using MediaBrowser.Model.Logging;
+
+namespace MediaBrowser.Dlna.Service
+{
+    public class BaseService : IEventManager
+    {
+        protected IEventManager EventManager;
+        protected IHttpClient HttpClient;
+        protected ILogger Logger;
+
+        protected BaseService(ILogger logger, IHttpClient httpClient)
+        {
+            Logger = logger;
+            HttpClient = httpClient;  
+
+            EventManager = new EventManager(Logger, HttpClient);
+        }
+
+        public EventSubscriptionResponse CancelEventSubscription(string subscriptionId)
+        {
+            return EventManager.CancelEventSubscription(subscriptionId);
+        }
+
+        public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, int? timeoutSeconds)
+        {
+            return EventManager.RenewEventSubscription(subscriptionId, timeoutSeconds);
+        }
+
+        public EventSubscriptionResponse CreateEventSubscription(string notificationType, int? timeoutSeconds, string callbackUrl)
+        {
+            return EventManager.CreateEventSubscription(notificationType, timeoutSeconds, callbackUrl);
+        }
+    }
+}

+ 2 - 5
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -522,13 +522,10 @@ namespace MediaBrowser.ServerApplication
             var dlnaManager = new DlnaManager(XmlSerializer, FileSystemManager, ApplicationPaths, LogManager.GetLogger("Dlna"), JsonSerializer);
             RegisterSingleInstance<IDlnaManager>(dlnaManager);
 
-            var dlnaEventManager = new EventManager(LogManager, HttpClient);
-            RegisterSingleInstance<IEventManager>(dlnaEventManager);
-
-            var contentDirectory = new ContentDirectory(dlnaManager, UserDataManager, ImageProcessor, DtoService, LibraryManager, LogManager, ServerConfigurationManager, UserManager, dlnaEventManager);
+            var contentDirectory = new ContentDirectory(dlnaManager, UserDataManager, ImageProcessor, DtoService, LibraryManager, ServerConfigurationManager, UserManager, LogManager.GetLogger("UpnpContentDirectory"), HttpClient);
             RegisterSingleInstance<IContentDirectory>(contentDirectory);
 
-            var connectionManager = new ConnectionManager(dlnaManager, LogManager, ServerConfigurationManager);
+            var connectionManager = new ConnectionManager(dlnaManager, ServerConfigurationManager, LogManager.GetLogger("UpnpConnectionManager"), HttpClient);
             RegisterSingleInstance<IConnectionManager>(connectionManager);
 
             var collectionManager = new CollectionManager(LibraryManager, FileSystemManager, LibraryMonitor);