int read_loop()

in sample_app/onvif_camera_mock/artifacts/wsdd/src/file_utils.c [209:250]


int read_loop(int fd, char *buf, size_t buf_len, int timeout_in_usec, int count_loop)
{

    int   n, len;


    if( !buf || !buf_len )
    {
        errno = EINVAL;
        return -1;
    }


    len = buf_len;

    while( (len > 0) && (count_loop-- > 0) )
    {

        n = read(fd, buf, len);


        if( (n == -1) && (errno != EAGAIN) )
            return -1;                       // error reading


        if( n > 0 )
        {
            buf += n;
            len -= n;
        }


        if(len <= 0)
            break;


        usleep(timeout_in_usec);
    }


    return (buf_len - len);  //return length of data reading
}