Exemplo n.º 1
0
        public void SetNewHomeServer(string backendServerSystemId)
        {
            ServiceRegistration.Get <ILogger>().Info("ServerConnectionManager: Attaching to MediaPortal backend server '{0}'", backendServerSystemId);

            ServiceRegistration.Get <ILogger>().Debug("ServerConnectionManager: Stopping to watch for MediaPortal servers");
            lock (_syncObj)
                if (_serverWatcher != null)
                {
                    _serverWatcher.Stop();
                    _serverWatcher = null;
                }

            ServiceRegistration.Get <ILogger>().Debug("ServerConnectionManager: Building UPnP control point for communication with the new home server");
            UPnPClientControlPoint cp;

            lock (_syncObj)
                cp = _controlPoint;
            if (cp != null)
            {
                cp.Stop(); // Must be outside the lock - sends messages
            }
            lock (_syncObj)
            {
                ISettingsManager         settingsManager = ServiceRegistration.Get <ISettingsManager>();
                ServerConnectionSettings settings        = settingsManager.Load <ServerConnectionSettings>();
                // Here, we only set the system ID of the new home server. The server's system ID will remain in the settings
                // until method SetNewHomeServer is called again.
                settings.HomeServerSystemId = backendServerSystemId;
                settingsManager.Save(settings);
                _controlPoint = BuildClientControlPoint(backendServerSystemId);
            }
            _controlPoint.Start(); // Outside the lock
            ServerConnectionMessaging.SendServerConnectionStateChangedMessage(ServerConnectionMessaging.MessageType.HomeServerAttached);
        }