/// <summary>
        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
        /// </summary>
        public void Dispose()
        {
            // Unbind events
            _sessionManager.PlaybackStart   -= PlaybackStart;
            _sessionManager.PlaybackStopped -= PlaybackStopped;

            // Clean up
            _apiClient = null;
        }
        public ServerEntryPoint(
            ISessionManager sessionManager,
            IJsonSerializer jsonSerializer,
            IHttpClientFactory httpClientFactory,
            ILoggerFactory loggerFactory,
            IUserDataManager userDataManager)
        {
            _logger = loggerFactory.CreateLogger <ServerEntryPoint>();

            _sessionManager  = sessionManager;
            _userDataManager = userDataManager;
            var mbClient = new MbClient(httpClientFactory, jsonSerializer, _logger);

            _apiClient = new LbApiClient(httpClientFactory, jsonSerializer, mbClient, _logger);
            Instance   = this;
        }