protected bool sendBufferredMsg() { if (_unsent_msglist.Count == 0) { return(true); } RpcMessage m = _unsent_msglist[0]; _unsent_msglist.RemoveAt(0); if (_sent_num == 0) { //第一次连接进入之后的第一个数据包需要携带令牌和设备标识码,用于接入服务器的验证 if (_token != null && !_token.Equals("")) { m.extra.setPropertyValue("__token__", _token); m.extra.setPropertyValue("__device_id__", RpcCommunicator.getSystemDeviceID()); } } byte[] bytes = createMsgBody(m).ToArray(); _sock.BeginSend(bytes, 0, bytes.Length, SocketFlags.None, delegate(IAsyncResult ar) { try { RpcConnectionAsyncSocket s = (RpcConnectionAsyncSocket)ar.AsyncState; s.sendBufferredMsg(); } catch (Exception e) { RpcCommunicator.instance().logger.error("BeginSend failed:" + e.ToString()); } }, this); _sent_num++; return(true); }
protected override bool sendDetail(RpcMessage m) { if (!isConnected) { if (!connect()) { return(false); } } if (_sent_num == 0) //第一次连接进入之后的第一个数据包需要携带令牌和设备标识码,用于接入服务器的验证 { if (_token != null && !_token.Equals("")) { m.extra.setPropertyValue("__token__", _token); m.extra.setPropertyValue("__device_id__", RpcCommunicator.getSystemDeviceID()); } } //byte[] body = null; //body = ((MemoryStream) m.marshall()).ToArray(); byte[] bytes = createMsgBody(m).ToArray(); _sock.Send(bytes); _sent_num++; return(true); }