public void RemoveListener(uint pid, ProtocolListener listener) { PTLListenerHelper helper = m_mapPID2Listener[pid]; if (helper != null) { helper.listener -= listener; } }
//================================================================== public void AddListener(uint pid, ProtocolListener listener) { PTLListenerHelper helper = m_mapPID2Listener[pid]; if (helper == null) { helper = new PTLListenerHelper(); helper.pid = pid; m_mapPID2Listener[pid] = helper; } helper.listener -= listener; helper.listener += listener; }
public AgentHandler( ProtocolListener protocol, MailDispatcher dispatcher, MailTransfer transfer, AgentSettings settings, ILogger logger, CancellationToken cancellationToken) { _protocol = protocol; _dispatcher = dispatcher; _transfer = transfer; _settings = settings; _logger = logger; _cancellationToken = cancellationToken; }
public void Send(uint pid, object req, uint connId, Type rspType, ProtocolListener listener, ErrorListener errorListener) { //regist rspType if (rspType != null) { Register(pid + 1, rspType); } //record listner uint index = 0; if (listener != null || errorListener != null) { index = ++m_index; PTLListenerHelper helper = new PTLListenerHelper(); helper.listener = listener; helper.errorListener = errorListener; helper.timestamp = UnityEngine.Time.realtimeSinceStartup; helper.pid = pid + 1;//this is a rule helper.index = index; m_lstRspListener.Add(helper); } //serialize protocol byte[] dataBuffer = SerializeProtocol(req); //protocol header ProtocolHeader head = new ProtocolHeader(); head.pid = pid; head.index = index; head.dataSize = dataBuffer.Length; head.checksum = SGFEncoder.CheckSum(dataBuffer, dataBuffer.Length); //serilize protocol header m_sendBufferTemp.Position = 0; head.Serialize(m_sendBufferTemp); //combine buffer of the protocol m_sendBufferTemp.AddBytes(dataBuffer); ConnectManager.Instance.Send(connId, m_sendBufferTemp.GetBytes(), m_sendBufferTemp.Length); }
public void Send(uint pid, object req, uint connId, Type rspType, ProtocolListener listener, ErrorListener errorListener) { //注册Rsp类 if (rspType != null) { Register(pid + 1, rspType); } //记录Listener uint index = 0; if (listener != null || errorListener != null) { index = ++m_index; PTLListenerHelper helper = new PTLListenerHelper(); helper.listener = listener; helper.errorListener = errorListener; helper.timestamp = UnityEngine.Time.realtimeSinceStartup; helper.pid = pid + 1;//这是一个规则 helper.index = index; m_lstRspListener.Add(helper); } //序列化协议数据 byte[] dataBuffer = SerializeProtocol(req); //协议头 ProtocolHead head = new ProtocolHead(); head.pid = pid; head.index = index; head.dataSize = dataBuffer.Length; head.checksum = SGFEncoding.CheckSum(dataBuffer, dataBuffer.Length); //序列化协议头 m_sendBufferTemp.Position = 0; head.Serialize(m_sendBufferTemp); //组合整个协议Buffer m_sendBufferTemp.AddBytes(dataBuffer); ConnectManager.Instance.Send(connId, m_sendBufferTemp.GetBytes(), m_sendBufferTemp.Length); }
public void StartListening(ProtocolListener listener) { listener.DataRecieved += listener_DataRecieved; }
//=================================================================== public void Send <TRsp>(uint pid, object req, uint connId, ProtocolListener listener, ErrorListener errorListener = null) { Send(pid, req, connId, typeof(TRsp), listener, errorListener); }