CSharpRTMP.Core.ClientApplicationManager.UnRegisterApplication C# (CSharp) Метод

UnRegisterApplication() публичный статический Метод

public static UnRegisterApplication ( this pClientApplication ) : void
pClientApplication this
Результат void
        public static void UnRegisterApplication(this BaseClientApplication pClientApplication)
        {
            if (ApplicationById.ContainsKey(pClientApplication.Id)) ApplicationById.Remove(pClientApplication.Id);
            if (ApplicationByName.ContainsKey(pClientApplication.Name)) ApplicationByName.Remove(pClientApplication.Name);
            foreach (var item in ApplicationByName.Where(x => pClientApplication.Aliases.Contains(x.Key)).ToArray())
            {
                ApplicationByName.Remove(item.Key);
            }
            if (DefaultApplication?.Id == pClientApplication.Id)
            {
                DefaultApplication = null;
            }
            pClientApplication.Log().Info("Application `{0}` ({1}) unregistered", pClientApplication.Name,
                    pClientApplication.Id);
        }

Usage Example

        public static void Shutdown(BaseClientApplication pApplication)
        {
            //1. Get the list of all active protocols
            var protocols = ProtocolManager.ActiveProtocols;

            //2. enqueue for delete for all protocols bound to pApplication
            foreach (var p in protocols.Where(x => x.Value.Application != null && x.Value.Application.Id == pApplication.Id).Select(x => x.Value))
            {
                p.Application = null;
                p.EnqueueForDelete();
            }

            //1. Get the list of all active IOHandlers and enqueue for delete for all services bound to pApplication
            var handlers = IOHandlerManager.ActiveIoHandler;

            foreach (var h in handlers)
            {
                BaseProtocol pTemp = h.Value.Protocol;
                while (pTemp != null)
                {
                    if ((pTemp.Application != null) &&
                        (pTemp.Application.Id == pApplication.Id))
                    {
                        IOHandlerManager.EnqueueForDelete(h.Value);
                        break;
                    }
                    pTemp = pTemp.NearProtocol;
                }
            }

            handlers = IOHandlerManager.ActiveIoHandler;
            foreach (var h in handlers)
            {
                if (h.Value.Type == IOHandlerType.IOHT_ACCEPTOR && ((TCPAcceptor)h.Value).Application != null && ((TCPAcceptor)h.Value).Application.Id == pApplication.Id)
                {
                    IOHandlerManager.EnqueueForDelete(h.Value);
                }
            }
            //4. Unregister it
            ClientApplicationManager.UnRegisterApplication(pApplication);
        }