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); } } } }
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())); } } }
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()); }
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(); } }
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(); } }
public List <JT808UdpSession> GetUdpAll() { return(TerminalPhoneNoSessions.Where(w => w.Value.TransportProtocolType == JT808TransportProtocolType.udp).Select(s => (JT808UdpSession)s.Value).ToList()); }
public List <UnionTcpSession> GetTcpAll() { return(TerminalPhoneNoSessions.Where(w => w.Value.TransportProtocolType == TransportProtocolType.Tcp).Select(s => (UnionTcpSession)s.Value).ToList()); }