Ejemplo n.º 1
0
        /// <summary>
        /// Registers event handlers to get notifications about client connections.
        /// </summary>
        protected void CompleteServerConnection()
        {
            UPnPServerControllerServiceProxy sc = ServerControllerServiceProxy;

            if (sc != null)
            {
                // Register state variables change events
                sc.AttachedClientsChanged  += OnAttachedClientsChanged;
                sc.ConnectedClientsChanged += OnConnectedClientsChanged;
            }
        }
Ejemplo n.º 2
0
        public void DetachFromHomeServer()
        {
            ISettingsManager         settingsManager = ServiceRegistration.Get <ISettingsManager>();
            ServerConnectionSettings settings        = settingsManager.Load <ServerConnectionSettings>();

            ServiceRegistration.Get <ILogger>().Info("ServerConnectionManager: Detaching from home server '{0}'", settings.HomeServerSystemId);

            UPnPServerControllerServiceProxy sc = ServerControllerServiceProxy;

            if (sc != null)
            {
                try
                {
                    sc.AttachedClientsChanged  -= OnAttachedClientsChanged;
                    sc.ConnectedClientsChanged -= OnConnectedClientsChanged;
                }
                catch (Exception e)
                {
                    ServiceRegistration.Get <ILogger>().Warn("ServerConnectionManager: Error detaching from home server '{0}'", e, HomeServerSystemId);
                }
            }

            ServiceRegistration.Get <ILogger>().Debug("ServerConnectionManager: Closing server connection");
            UPnPClientControlPoint cp;

            lock (_syncObj)
                cp = _controlPoint;
            if (cp != null)
            {
                cp.Stop(); // Must be outside the lock - sends messages
            }
            lock (_syncObj)
            {
                settings.HomeServerSystemId   = null;
                settings.LastHomeServerName   = null;
                settings.LastHomeServerSystem = null;
                settingsManager.Save(settings);
                _controlPoint = null;
            }
            ServerConnectionMessaging.SendServerConnectionStateChangedMessage(ServerConnectionMessaging.MessageType.HomeServerDetached);

            ServiceRegistration.Get <ILogger>().Debug("ServerConnectionManager: Starting to watch for MediaPortal servers");
            if (_serverWatcher == null)
            {
                lock (_syncObj)
                    _serverWatcher = BuildServerWatcher();
                _serverWatcher.Start(); // Outside the lock
            }
        }