Opc.Ua.Server.SessionPublishQueue.Close C# (CSharp) Method

Close() public method

Clears the queues because the session is closing.
public Close ( ) : IList
return IList
        public IList<Subscription> Close()
        {            
            lock (m_lock)
            {
                // TraceState("SESSION CLOSED");

                // wake up any waiting publish requests.
                m_publishEvent.Set();

                while (m_queuedRequests.Count > 0)
                {
                    QueuedRequest request = m_queuedRequests.First.Value;
                    m_queuedRequests.RemoveFirst();
                    request.Error = StatusCodes.BadSessionClosed;
                    request.Set();
                }
                
                // tell the subscriptions that the session is closed.
                Subscription[] subscriptions = new Subscription[m_queuedSubscriptions.Count];

                for (int ii = 0; ii < m_queuedSubscriptions.Count; ii++)
                {
                    subscriptions[ii] = m_queuedSubscriptions[ii].Subscription;
                    subscriptions[ii].SessionClosed();
                }

                // clear the queue.
                m_queuedSubscriptions.Clear();

                return subscriptions;
            }
        }