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); }); }