Ejemplo n.º 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);
             }
         }
     }
 }
Ejemplo n.º 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()));
         }
     }
 }
Ejemplo n.º 3
0
        public List <JT808UdpSession> GetUdpAll(Func <IJT808Session, bool> predicate = null)
        {
            var query = TerminalPhoneNoSessions.Where(w => w.Value.TransportProtocolType == JT808TransportProtocolType.udp);

            if (predicate != null)
            {
                query = query.Where(s => predicate(s.Value));
            }
            return(query.Select(s => (JT808UdpSession)s.Value).ToList());
        }
Ejemplo n.º 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);
             JT808SessionProducer?.ProduceAsync(JT808GatewayConstants.SessionOffline, tmpTerminalPhoneNo);
             if (logger.IsEnabled(LogLevel.Information))
             {
                 logger.LogInformation($"[Session Remove]:{tmpTerminalPhoneNo}");
             }
         }
         removeSession.Close();
     }
 }
Ejemplo n.º 5
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();
     }
 }
Ejemplo n.º 6
0
 public List <JT808UdpSession> GetUdpAll()
 {
     return(TerminalPhoneNoSessions.Where(w => w.Value.TransportProtocolType == JT808TransportProtocolType.udp).Select(s => (JT808UdpSession)s.Value).ToList());
 }
Ejemplo n.º 7
0
 public List <UnionTcpSession> GetTcpAll()
 {
     return(TerminalPhoneNoSessions.Where(w => w.Value.TransportProtocolType == TransportProtocolType.Tcp).Select(s => (UnionTcpSession)s.Value).ToList());
 }