void AsyncTCPSocket::ProcessInput(char * data, size_t& len) { SocketAddress remote_addr(GetRemoteAddress()); while (true) { if (len < PKT_LEN_SIZE) return; PacketLength pkt_len; memcpy(&pkt_len, data, PKT_LEN_SIZE); pkt_len = NetworkToHost16(pkt_len); if (len < PKT_LEN_SIZE + pkt_len) return; SignalReadPacket(this, data + PKT_LEN_SIZE, pkt_len, remote_addr); len -= PKT_LEN_SIZE + pkt_len; if (len > 0) { memmove(data, data + PKT_LEN_SIZE + pkt_len, len); } } }
void AsyncTCPSocketNormal::ProcessInput(char* data, size_t* len) { talk_base::SocketAddress remote_addr(GetRemoteAddress()); SignalReadPacket(this,data, *len, remote_addr); *len = 0; }