Opc.Ua.Com.Server.ComProxy.Session_KeepAlive C# (CSharp) Method

Session_KeepAlive() private method

The session the keep alive handler.
private Session_KeepAlive ( Session session, KeepAliveEventArgs e ) : void
session Opc.Ua.Client.Session The session.
e Opc.Ua.Client.KeepAliveEventArgs The instance containing the event data.
return void
        private void Session_KeepAlive(Session session, KeepAliveEventArgs e)
        {
            int missedKeepAlives = 0;

            lock (m_lock)
            {
                // check if the session is closed.
                if (!m_running || !Object.ReferenceEquals(m_session, session))
                {
                    return;
                }

                // check if everything is ok.
                if (ServiceResult.IsGood(e.Status))
                {
                    m_missedKeepAlives = 0;
                    m_lastKeepAliveTime = DateTime.UtcNow;
                    return;
                }
                
                // increment miss count.                    
                missedKeepAlives = ++m_missedKeepAlives;
            }

            // attempt to reconnect after two misses.
            if (missedKeepAlives == 2)
            {
                ThreadPool.QueueUserWorkItem(OnReconnectSession, session);
                Utils.Trace("Calling OnReconnectSession NOW.");
            }
        }