src/socket_reader.cpp
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * Lee bytes del tubo (usando select-read, con temporizador para evitar bloqueos permanentes) y los deposita en strbuf_
 * @param eof Si se devuelve true significa que no hemos leido nada ni podremos leer nada en el futuro (EOF)
 */
Lee bytes del tubo (usando select-read, con temporizador para evitar bloqueos permanentes) y los deposita en strbuf_
@param eof Si se devuelve true significa que no hemos leido nada ni podremos leer nada en el futuro (EOF)
Lee bytes del tubo ( usando select - read con temporizador para evitar bloqueos permanentes ) y los deposita en strbuf_ @param eof Si se devuelve true significa que no hemos leido nada ni podremos leer nada en el futuro ( EOF )
SocketReader::Error SocketReader::ReadAndAppend() {
      int rv;
      int rdlen;
      struct timeval this_timeout;
      this_timeout = timeout_;
      rv = select(fd_ + 1, &set_, NULL, NULL, &this_timeout);
      if (rv == -1) {
            return ERROR_IO;
      } else if (rv == 0) {
            return ERROR_READ_TIMEOUT;
      }
      rdlen = (int) read(fd_, (void*) (strbuf_ + strlen_), readsz_);
      if (rdlen == -1) {
            return ERROR_IO;
      }
      if (rdlen == 0) { 
            eof_ = true;
	    return ERROR_EOF;
      }
      fd_byte_count_ += rdlen;
      total_byte_count_ += rdlen;
      strlen_ += rdlen;
      return ERROR_NO;
}
SocketReader :: Error SocketReader :: ReadAndAppend ( ) { int rv ; int rdlen ; struct timeval this_timeout ; this_timeout = timeout_ ; rv = select ( fd_ + 1 , & set_ , NULL , NULL , & this_timeout ) ; if ( rv == -1 ) { return ERROR_IO ; } else if ( rv == 0 ) { return ERROR_READ_TIMEOUT ; } rdlen = ( int ) read ( fd_ , ( void * ) ( strbuf_ + strlen_ ) , readsz_ ) ; if ( rdlen == -1 ) { return ERROR_IO ; } if ( rdlen == 0 ) { eof_ = true ; return ERROR_EOF ; } fd_byte_count_ += rdlen ; total_byte_count_ += rdlen ; strlen_ += rdlen ; return ERROR_NO ; }
Lee bytes del tubo (usando select-read, con temporizador para evitar bloqueos permanentes) y los deposita en strbuf_
 @param eof Si se devuelve true significa que no hemos leido nada ni podremos leer nada en el futuro (EOF)
Lee bytes del tubo ( usando select - read con temporizador para evitar bloqueos permanentes ) y los deposita en strbuf_ @param eof Si se devuelve true significa que no hemos leido nada ni podremos leer nada en el futuro ( EOF )
//printf("SocketReader::ReadAndAppend() ERROR_IO!\n"); //printf("SocketReader::ReadAndAppend() TIMEOUT!\n"); // En este punto tenemos garantizado que read() no se bloqueará, retornará inmediatamente //printf("SocketReader::ReadAndAppend() read() error\n");