Exemple #1
0
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;
}