Example #1
0
        /// <summary>
        /// Verwaltete Ressourcen freigeben.
        /// </summary>
        public void Dispose()
        {
            // Wenn Dispose noch nicht aufgerufen wurde ...
            if (!_isDisposed)
            {
                // Schalter setzen
                _isDisposed = true;

                // Host aus der Auflistung entfernen
                _hosts.Remove(this);

                // Horchen auf Client-Anfragen beenden
                StopListening();

                // Wenn der Komponentenaufrufer existiert ...
                if (_invoker != null)
                {
                    // Komponnetenaufrufer entsorgen
                    _invoker = null;
                }

                // Wenn die Sitzungsverwaltung existiert ...
                if (_sessionManager != null)
                {
                    // Sitzungsverwaltung entsorgen
                    _sessionManager.Dispose();
                    _sessionManager = null;
                }
                // Wenn die Authentifizierung verdrahtet ist ...
                if (this.Authenticate != null)
                {
                    // Verdrahtung aufheben
                    this.Authenticate = null;
                }

                // Wenn der Authentifizierungsanbieter existiert ...
                if (_authProvider != null)
                {
                    // Authentifizierungsanbieter entsorgen
                    _authProvider = null;
                }

                // Wenn der Komponentenkatalog existiert ...
                if (_catalog != null)
                {
                    // Komponentenkatalog entsorgen
                    _catalog = null;
                }
            }
        }
Example #2
0
        /// <summary>
        /// Konstruktor.
        /// </summary>
        /// <param name="name">Name des Komponentenhosts</param>
        /// <param name="protocolSetup">Protokoll-Einstellungen</param>
        /// <param name="sessionManager">Sitzungsverwaltung</param>
        /// <param name="catalog">Komponenten-Katalog</param>
        public ZyanComponentHost(string name, IServerProtocolSetup protocolSetup, ISessionManager sessionManager, ComponentCatalog catalog)
        {
            // Wenn kein Name angegeben wurde ...
            if (string.IsNullOrEmpty(name))
            {
                // Ausnahme werfen
                throw new ArgumentException(LanguageResource.ArgumentException_ComponentHostNameMissing, "name");
            }

            // Wenn keine Protokoll-Einstellungen angegeben wurde ...
            if (protocolSetup == null)
            {
                // Ausnahme werfen
                throw new ArgumentNullException("protocolSetup");
            }

            // Wenn keine Sitzungsverwaltung übergeben wurde ...
            if (sessionManager == null)
            {
                // Ausnahme werfen
                throw new ArgumentNullException("sessionManager");
            }

            // Wenn kein Komponenten-Katalog angegeben wurde ...
            if (catalog == null)
            {
                // Ausnahme werfen
                throw new ArgumentNullException("catalog");
            }

            // Werte übernehmen
            _name           = name;
            _protocolSetup  = protocolSetup;
            _sessionManager = sessionManager;
            _catalog        = catalog;

            // Komponentenaufrufer erzeugen
            _invoker = new ZyanDispatcher(this);

            // Authentifizierungsanbieter übernehmen und verdrahten
            _authProvider     = protocolSetup.AuthenticationProvider;
            this.Authenticate = _authProvider.Authenticate;

            // Komponenten Host der Host-Auflistung zufügen
            _hosts.Add(this);

            // Beginnen auf Client-Anfragen zu horchen
            StartListening();
        }
        /// <summary>
        /// Releases all managed resources.
        /// </summary>
        /// <param name="calledFromFinalizer">Specifies if this method is called from finalizer or not</param>
        private void Dispose(bool calledFromFinalizer)
        {
            if (!_isDisposed)
            {
                OnDisposing(new EventArgs());

                _isDisposed = true;

                _hosts.Remove(this);

                StopListening();

                if (_dispatcher != null)
                {
                    _dispatcher = null;
                }

                if (_sessionManager != null)
                {
                    _sessionManager.Dispose();
                    _sessionManager = null;
                }
                if (this.Authenticate != null)
                {
                    this.Authenticate = null;
                }

                if (_authProvider != null)
                {
                    _authProvider = null;
                }

                if (_catalog != null)
                {
                    if (_catalog.DisposeWithHost)
                    {
                        _catalog.Dispose();
                    }

                    _catalog = null;
                }

                if (!calledFromFinalizer)
                {
                    GC.SuppressFinalize(this);
                }
            }
        }
Example #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ZyanComponentHost" /> class.
        /// </summary>
        /// <param name="name">The name of the component host.</param>
        /// <param name="protocolSetup">The protocol setup.</param>
        /// <param name="sessionManager">The session manager.</param>
        /// <param name="catalog">The component catalog.</param>
        public ZyanComponentHost(string name, IServerProtocolSetup protocolSetup, ISessionManager sessionManager, IComponentCatalog catalog)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException(LanguageResource.ArgumentException_ComponentHostNameMissing, "name");
            }

            if (protocolSetup == null)
            {
                throw new ArgumentNullException("protocolSetup");
            }

            if (sessionManager == null)
            {
                throw new ArgumentNullException("sessionManager");
            }

            if (catalog == null)
            {
                throw new ArgumentNullException("catalog");
            }

            _name           = name;
            _protocolSetup  = protocolSetup;
            _sessionManager = sessionManager;
            _sessionManager.ClientSessionTerminated += (s, e) => OnClientSessionTerminated(e);
            _catalog = catalog;
            _serializationHandling = new SerializationHandlerRepository();
            _dispatcher            = new ZyanDispatcher(this);

            // Set up authentication request delegate
            _authProvider     = protocolSetup.AuthenticationProvider;
            this.Authenticate = _authProvider.Authenticate;

            // Register standard serialization handlers
            RegisterStandardSerializationHandlers();

            _hosts.Add(this);
            StartListening();
            DiscoverableUrl = _protocolSetup.GetDiscoverableUrl(_name);
        }
Example #5
0
        /// <summary>
        /// Releases all managed resources.
        /// </summary>
        /// <param name="calledFromFinalizer">Specifies if this method is called from finalizer or not</param>
        private void Dispose(bool calledFromFinalizer)
        {
            if (!_isDisposed)
            {
                OnDisposing(new EventArgs());

                _isDisposed = true;
                _hosts.Remove(this);

                DisableDiscovery();
                StopListening();

                if (_sessionManager != null)
                {
                    _sessionManager.Dispose();
                    _sessionManager = null;
                }

                _dispatcher   = null;
                Authenticate  = null;
                _authProvider = null;

                if (_catalog != null && DisposeCatalogWithHost)
                {
                    var catalog = _catalog as IDisposable;
                    if (catalog != null)
                    {
                        catalog.Dispose();
                    }

                    _catalog = null;
                }

                if (!calledFromFinalizer)
                {
                    GC.SuppressFinalize(this);
                }
            }
        }