BaronGreenback 5 anos atrás
pai
commit
93568be3e7
1 arquivos alterados com 56 adições e 56 exclusões
  1. 56 56
      Emby.Dlna/Main/DlnaEntryPoint.cs

+ 56 - 56
Emby.Dlna/Main/DlnaEntryPoint.cs

@@ -131,69 +131,20 @@ namespace Emby.Dlna.Main
         {
             await ((DlnaManager)_dlnaManager).InitProfilesAsync().ConfigureAwait(false);
 
-            ReloadComponents();
+            await ReloadComponents().ConfigureAwait(false);
 
-            _config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated;
-        }
-
-        public void Dispose()
-        {
-            DisposeDevicePublisher();
-            DisposePlayToManager();
-            DisposeDeviceDiscovery();
-
-            if (_communicationsServer != null)
-            {
-                _logger.LogInformation("Disposing SsdpCommunicationsServer");
-                _communicationsServer.Dispose();
-                _communicationsServer = null;
-            }
-
-            ContentDirectory = null;
-            ConnectionManager = null;
-            MediaReceiverRegistrar = null;
-            Current = null;
-        }
-
-        public async Task StartDevicePublisher(Configuration.DlnaOptions options)
-        {
-            if (!options.BlastAliveMessages)
-            {
-                return;
-            }
-
-            if (_publisher != null)
-            {
-                return;
-            }
-
-            try
-            {
-                _publisher = new SsdpDevicePublisher(_communicationsServer, _networkManager, OperatingSystem.Name, Environment.OSVersion.VersionString, _config.GetDlnaConfiguration().SendOnlyMatchedHost)
-                {
-                    LogFunction = LogMessage,
-                    SupportPnpRootDevice = false
-                };
-
-                await RegisterServerEndpoints().ConfigureAwait(false);
-
-                _publisher.StartBroadcastingAliveMessages(TimeSpan.FromSeconds(options.BlastAliveMessageIntervalSeconds));
-            }
-            catch (Exception ex)
-            {
-                _logger.LogError(ex, "Error registering endpoint");
-            }
-        }
+            _config.NamedConfigurationUpdated += OnNamedConfigurationUpdated;
+        }       
 
-        void _config_NamedConfigurationUpdated(object sender, ConfigurationUpdateEventArgs e)
+        private async void OnNamedConfigurationUpdated(object sender, ConfigurationUpdateEventArgs e)
         {
             if (string.Equals(e.Key, "dlna", StringComparison.OrdinalIgnoreCase))
             {
-                ReloadComponents();
+                await ReloadComponents().ConfigureAwait(false);
             }
         }
 
-        private async void ReloadComponents()
+        private async Task ReloadComponents()
         {
             var options = _config.GetDlnaConfiguration();
 
@@ -227,7 +178,7 @@ namespace Emby.Dlna.Main
                     var enableMultiSocketBinding = OperatingSystem.Id == OperatingSystemId.Windows ||
                                                    OperatingSystem.Id == OperatingSystemId.Linux;
 
-                    _communicationsServer = new SsdpCommunicationsServer(_socketFactory, _networkManager, _logger, enableMultiSocketBinding)
+                    _communicationsServer = new SsdpCommunicationsServer(_config, _socketFactory, _networkManager, _logger, enableMultiSocketBinding)
                     {
                         IsShared = true
                     };
@@ -271,6 +222,36 @@ namespace Emby.Dlna.Main
             }
         }
 
+        public async Task StartDevicePublisher(Configuration.DlnaOptions options)
+        {
+            if (!options.BlastAliveMessages)
+            {
+                return;
+            }
+
+            if (_publisher != null)
+            {
+                return;
+            }
+
+            try
+            {
+                _publisher = new SsdpDevicePublisher(_communicationsServer, _networkManager, OperatingSystem.Name, Environment.OSVersion.VersionString, _config.GetDlnaConfiguration().SendOnlyMatchedHost)
+                {
+                    LogFunction = LogMessage,
+                    SupportPnpRootDevice = false
+                };
+
+                await RegisterServerEndpoints().ConfigureAwait(false);
+
+                _publisher.StartBroadcastingAliveMessages(TimeSpan.FromSeconds(options.BlastAliveMessageIntervalSeconds));
+            }
+            catch (Exception ex)
+            {
+                _logger.LogError(ex, "Error registering endpoint");
+            }
+        }
+
         private async Task RegisterServerEndpoints()
         {
             var addresses = await _appHost.GetLocalIpAddresses(CancellationToken.None).ConfigureAwait(false);
@@ -418,6 +399,25 @@ namespace Emby.Dlna.Main
             }
         }
 
+        public void Dispose()
+        {
+            DisposeDevicePublisher();
+            DisposePlayToManager();
+            DisposeDeviceDiscovery();
+
+            if (_communicationsServer != null)
+            {
+                _logger.LogInformation("Disposing SsdpCommunicationsServer");
+                _communicationsServer.Dispose();
+                _communicationsServer = null;
+            }
+
+            ContentDirectory = null;
+            ConnectionManager = null;
+            MediaReceiverRegistrar = null;
+            Current = null;
+        }
+
         public void DisposeDevicePublisher()
         {
             if (_publisher != null)