Пример #1
0
 public void RemoveByTerminalPhoneNo(string terminalPhoneNo)
 {
     if (TerminalPhoneNoSessions.TryGetValue(terminalPhoneNo, out var removeTerminalPhoneNoSessions))
     {
         // 处理转发过来的是数据 这时候通道对设备是1对多关系,需要清理垃圾数据
         //1.用当前会话的通道Id找出通过转发过来的其他设备的终端号
         var terminalPhoneNos = TerminalPhoneNoSessions.Where(w => w.Value.SessionID == removeTerminalPhoneNoSessions.SessionID).Select(s => s.Key).ToList();
         //2.存在则一个个移除
         string tmpTerminalPhoneNo = terminalPhoneNo;
         if (terminalPhoneNos.Count > 0)
         {
             //3.移除包括当前的设备号
             foreach (var item in terminalPhoneNos)
             {
                 TerminalPhoneNoSessions.TryRemove(item, out _);
             }
             tmpTerminalPhoneNo = string.Join(",", terminalPhoneNos);
         }
         if (Sessions.TryRemove(removeTerminalPhoneNoSessions.SessionID, out var removeSession))
         {
             removeSession.Close();
             if (logger.IsEnabled(LogLevel.Information))
             {
                 logger.LogInformation($"[Session Remove]:{terminalPhoneNo}-{tmpTerminalPhoneNo}");
             }
             if (SessionProducer != null)
             {
                 SessionProducer.ProduceAsync(JT808GatewayConstants.SessionOffline, tmpTerminalPhoneNo);
             }
         }
     }
 }
Пример #2
0
 public void RemoveByTerminalPhoneNo(string terminalPhoneNo)
 {
     if (TerminalPhoneNoSessions.TryGetValue(terminalPhoneNo, out var removeTerminalPhoneNoSessions))
     {
         // 处理转发过来的是数据 这时候通道对设备是1对多关系,需要清理垃圾数据
         //1.用当前会话的通道Id找出通过转发过来的其他设备的终端号
         var terminalPhoneNos = TerminalPhoneNoSessions.Where(w => w.Value.SessionID == removeTerminalPhoneNoSessions.SessionID).Select(s => s.Key).ToList();
         //2.存在则一个个移除
         string tmpTerminalPhoneNo = terminalPhoneNo;
         if (terminalPhoneNos.Count > 0)
         {
             //3.移除包括当前的设备号
             foreach (var item in terminalPhoneNos)
             {
                 TerminalPhoneNoSessions.TryRemove(item, out _);
             }
             tmpTerminalPhoneNo = string.Join(",", terminalPhoneNos);
         }
         if (Sessions.TryRemove(removeTerminalPhoneNoSessions.SessionID, out var removeSession))
         {
             removeSession.Close();
             if (logger.IsEnabled(LogLevel.Information))
             {
                 logger.LogInformation($"[Session Remove]:{terminalPhoneNo}-{tmpTerminalPhoneNo}");
             }
             //会话通知
             SessionNoticeService.SessionNoticeBlockingCollection.Add((JT1078GatewayConstants.SessionOffline, terminalPhoneNo, removeTerminalPhoneNoSessions.TransportProtocolType.ToString()));
         }
     }
 }
Пример #3
0
 public void RemoveBySessionId(string sessionId)
 {
     if (Sessions.TryRemove(sessionId, out var removeSession))
     {
         var terminalPhoneNos = TerminalPhoneNoSessions.Where(w => w.Value.SessionID == sessionId).Select(s => s.Key).ToList();
         if (terminalPhoneNos.Count > 0)
         {
             foreach (var item in terminalPhoneNos)
             {
                 TerminalPhoneNoSessions.TryRemove(item, out _);
             }
             var tmpTerminalPhoneNo = string.Join(",", terminalPhoneNos);
             JT808SessionProducer?.ProduceAsync(JT808GatewayConstants.SessionOffline, tmpTerminalPhoneNo);
             if (logger.IsEnabled(LogLevel.Information))
             {
                 logger.LogInformation($"[Session Remove]:{tmpTerminalPhoneNo}");
             }
         }
         removeSession.Close();
     }
 }
Пример #4
0
 public void RemoveBySessionId(string sessionId)
 {
     if (Sessions.TryRemove(sessionId, out var removeSession))
     {
         var terminalPhoneNos = TerminalPhoneNoSessions.Where(w => w.Value.SessionID == sessionId).Select(s => s.Key).ToList();
         if (terminalPhoneNos.Count > 0)
         {
             foreach (var item in terminalPhoneNos)
             {
                 TerminalPhoneNoSessions.TryRemove(item, out _);
             }
             var tmpTerminalPhoneNo = string.Join(",", terminalPhoneNos);
             //会话通知
             SessionNoticeService.SessionNoticeBlockingCollection.Add((JT1078GatewayConstants.SessionOffline, tmpTerminalPhoneNo, removeSession.TransportProtocolType.ToString()));
             if (logger.IsEnabled(LogLevel.Information))
             {
                 logger.LogInformation($"[Session Remove]:{tmpTerminalPhoneNo}");
             }
         }
         removeSession.Close();
     }
 }