123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using MediaBrowser.Common.Net;
- using MediaBrowser.Controller;
- using MediaBrowser.Controller.Configuration;
- using MediaBrowser.Controller.Dlna;
- using MediaBrowser.Controller.Dto;
- using MediaBrowser.Controller.Library;
- using MediaBrowser.Controller.Persistence;
- using MediaBrowser.Controller.Plugins;
- using MediaBrowser.Controller.Session;
- using MediaBrowser.Model.Logging;
- using System;
- namespace MediaBrowser.Dlna.PlayTo
- {
- public class PlayToServerEntryPoint : IServerEntryPoint
- {
- private PlayToManager _manager;
- private readonly IServerConfigurationManager _config;
- private readonly ILogger _logger;
- private readonly ISessionManager _sessionManager;
- private readonly IHttpClient _httpClient;
- private readonly IItemRepository _itemRepo;
- private readonly ILibraryManager _libraryManager;
- private readonly INetworkManager _networkManager;
- private readonly IUserManager _userManager;
- private readonly IDlnaManager _dlnaManager;
- private readonly IServerApplicationHost _appHost;
- private readonly IDtoService _dtoService;
- public PlayToServerEntryPoint(ILogManager logManager, IServerConfigurationManager config, ISessionManager sessionManager, IHttpClient httpClient, IItemRepository itemRepo, ILibraryManager libraryManager, INetworkManager networkManager, IUserManager userManager, IDlnaManager dlnaManager, IServerApplicationHost appHost, IDtoService dtoService)
- {
- _config = config;
- _sessionManager = sessionManager;
- _httpClient = httpClient;
- _itemRepo = itemRepo;
- _libraryManager = libraryManager;
- _networkManager = networkManager;
- _userManager = userManager;
- _dlnaManager = dlnaManager;
- _appHost = appHost;
- _dtoService = dtoService;
- _logger = logManager.GetLogger("PlayTo");
- }
- public void Run()
- {
- _config.ConfigurationUpdated += ConfigurationUpdated;
- ReloadPlayToManager();
- }
- void ConfigurationUpdated(object sender, EventArgs e)
- {
- ReloadPlayToManager();
- }
- private void ReloadPlayToManager()
- {
- var isStarted = _manager != null;
- if (_config.Configuration.DlnaOptions.EnablePlayTo && !isStarted)
- {
- StartPlayToManager();
- }
- else if (!_config.Configuration.DlnaOptions.EnablePlayTo && isStarted)
- {
- DisposePlayToManager();
- }
- }
- private readonly object _syncLock = new object();
- private void StartPlayToManager()
- {
- lock (_syncLock)
- {
- try
- {
- _manager = new PlayToManager(_logger,
- _config,
- _sessionManager,
- _httpClient,
- _itemRepo,
- _libraryManager,
- _networkManager,
- _userManager,
- _dlnaManager,
- _appHost,
- _dtoService);
- _manager.Start();
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error starting PlayTo manager", ex);
- }
- }
- }
- private void DisposePlayToManager()
- {
- lock (_syncLock)
- {
- if (_manager != null)
- {
- try
- {
- _manager.Stop();
- _manager.Dispose();
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error disposing PlayTo manager", ex);
- }
- _manager = null;
- }
- }
- }
- public void Dispose()
- {
- DisposePlayToManager();
- }
- }
- }
|