private bool IsSupportProtocol(string topic) { string procotol = GetProcotolTypeFromTopic(topic); ProcotolType pt = GetProcotolType(procotol); return(ProcotolType.Invalid == pt); }
//断开连接 public void OnBreakSession(SubscribeMsg msg) { string procotol = GetProcotolTypeFromTopic(msg.Topic); ProcotolType pt = GetProcotolType(procotol); if (ProcotolType.Invalid == pt) { // unsupported procotol return; } var data = JsonHelper.SerializeJsonToObject <SessionData>(msg.Data); var key = $"{procotol}://{data.target.raddr}:{data.target.rport}"; if (!_Sessions.ContainsKey(key)) { return; } _Sessions[key].SendAsync(data.data); //发送数据 _Sessions[key].Stop(); //释放数据 _Sessions.Remove(key); }
//创建链接 public void OnMakeSession(SubscribeMsg msg) { string procotol = GetProcotolTypeFromTopic(msg.Topic); ProcotolType pt = GetProcotolType(procotol); if (ProcotolType.Invalid == pt) { // unsupported procotol return; } var sessionData = JsonHelper.SerializeJsonToObject <SessionData>(msg.Data); var key = $"{procotol}://{sessionData.target.raddr}:{sessionData.target.rport}"; if (_Sessions.ContainsKey(key)) { _Sessions[key].SendAsync(sessionData.data); //如果连接已经建立了,就只发送数据 return; } IASession session = null; if (ProcotolType.UDP == pt) { session = new UdpSession(sessionData.target); //TODO 先只处理udp协议 session.SendAsync(sessionData.data); } else if (ProcotolType.IP == pt) { session = new IpSession(sessionData.target); if (!session.Init(sessionData.target.laddr)) { return; } } _Sessions.Add(key, session); }
private ProcotolType GetProcotolType(string procotol) { ProcotolType type = ProcotolType.Invalid; procotol = procotol.ToUpper(); if (procotol.Equals("UDP")) { type = ProcotolType.UDP; } else if (procotol.Equals("TCP")) { type = ProcotolType.TCP; } else if (procotol.Equals("IP")) { type = ProcotolType.IP; } else if (procotol.Equals("FTP")) { type = ProcotolType.FTP; } return(type); }