UnsubscrTables() private method

private UnsubscrTables ( Lightstreamer subscrKeys, bool batchable ) : void
subscrKeys Lightstreamer
batchable bool
return void
        public virtual void UnsubscribeTable(Lightstreamer.DotNet.Client.SubscribedTableKey tableKey)
        {
            ServerManager connManager = this.ConnManager;

            Lightstreamer.DotNet.Client.SubscribedTableKey[] subscrKeys = new Lightstreamer.DotNet.Client.SubscribedTableKey[] { tableKey };
            ITableManager[] managerArray = connManager.DetachTables(subscrKeys);
            if (managerArray[0] == null)
            {
                try
                {
                    connManager.UnsubscrTables(new Lightstreamer.DotNet.Client.SubscribedTableKey[0], true);
                }
                catch (PhaseException)
                {
                }
                throw new SubscrException("Table not found");
            }
            managerArray[0].NotifyUnsub();
            try
            {
                connManager.UnsubscrTables(subscrKeys, true);
            }
            catch (PhaseException)
            {
                throw new SubscrException("Connection closed");
            }
        }
        public virtual void ForceUnsubscribeTable(Lightstreamer.DotNet.Client.SubscribedTableKey tableKey)
        {
            ServerManager connManager = this.ConnManager;

            Lightstreamer.DotNet.Client.SubscribedTableKey[] subscrKeys = new Lightstreamer.DotNet.Client.SubscribedTableKey[] { tableKey };
            try
            {
                connManager.UnsubscrTables(subscrKeys, false);
            }
            catch (PhaseException)
            {
                throw new SubscrException("Connection closed");
            }
        }
        public virtual void UnsubscribeTables(Lightstreamer.DotNet.Client.SubscribedTableKey[] tableKeys)
        {
            int           num2;
            ServerManager connManager = this.ConnManager;

            ITableManager[] managerArray = connManager.DetachTables(tableKeys);
            int             num          = 0;

            for (num2 = 0; num2 < managerArray.Length; num2++)
            {
                if (managerArray[num2] != null)
                {
                    managerArray[num2].NotifyUnsub();
                    num++;
                }
            }
            Lightstreamer.DotNet.Client.SubscribedTableKey[] subscrKeys = new Lightstreamer.DotNet.Client.SubscribedTableKey[num];
            int index = 0;

            for (num2 = 0; num2 < managerArray.Length; num2++)
            {
                if (managerArray[num2] != null)
                {
                    subscrKeys[index] = tableKeys[num2];
                    index++;
                }
            }
            try
            {
                connManager.UnsubscrTables(subscrKeys, true);
            }
            catch (PhaseException)
            {
                throw new SubscrException("Connection closed");
            }
        }