Пример #1
0
        internal void TryLink(string terminalPhoneNo, IJT808Session session)
        {
            DateTime curretDatetime = DateTime.Now;

            if (TerminalPhoneNoSessions.TryGetValue(terminalPhoneNo, out IJT808Session cacheSession))
            {
                if (session.SessionID != cacheSession.SessionID)
                {
                    //从转发到直连的数据需要更新缓存
                    session.ActiveTime = curretDatetime;
                    TerminalPhoneNoSessions.TryUpdate(terminalPhoneNo, session, cacheSession);
                    //会话通知
                    JT808SessionProducer?.ProduceAsync(JT808GatewayConstants.SessionOnline, terminalPhoneNo);
                }
                else
                {
                    cacheSession.ActiveTime = curretDatetime;
                    TerminalPhoneNoSessions.TryUpdate(terminalPhoneNo, cacheSession, cacheSession);
                }
            }
            else
            {
                session.TerminalPhoneNo = terminalPhoneNo;
                if (TerminalPhoneNoSessions.TryAdd(terminalPhoneNo, session))
                {
                    //会话通知
                    JT808SessionProducer?.ProduceAsync(JT808GatewayConstants.SessionOnline, terminalPhoneNo);
                }
            }
        }
 internal void TryLink(string terminalPhoneNo, IJT808Session session)
 {
     session.ActiveTime      = DateTime.Now;
     session.TerminalPhoneNo = terminalPhoneNo;
     Sessions.TryUpdate(session.SessionID, session, session);
     TerminalPhoneNoSessions.AddOrUpdate(terminalPhoneNo, session.SessionID, (key, oldValue) =>
     {
         if (session.SessionID != oldValue)
         {
             //会话通知
             JT808SessionProducer?.ProduceAsync(JT808GatewayConstants.SessionOnline, key);
             return(session.SessionID);
         }
         return(oldValue);
     });
 }