return -1;
}
+ LOG_DEBUG("fd[%d] event[%d]", fd, data->event);
+
return 0;
}
int espp_service_read_buffer(int fd, char *buffer, uint32_t size)
{
int ret;
+ uint32_t total = 0;
char str_error[MAX_ERROR_LEN] = {'\0',};
ASSERT(fd >= 0);
ASSERT(buffer);
- if ((ret = read(fd, buffer, size)) < 0) {
- strerror_r(errno, str_error, sizeof(str_error));
- LOG_ERROR("failed to read(), fd[%d], err: %s", fd, str_error);
- return -1;
- }
+ do {
+ if ((ret = read(fd, buffer + total, size - total)) < 0) {
+ strerror_r(errno, str_error, sizeof(str_error));
+ LOG_ERROR("failed to read(), fd[%d], ret[%d], err: %s", fd, ret, str_error);
+ break;
+ }
+ total += ret;
+ } while (total < size);
- if ((uint32_t)ret != size) {
- LOG_ERROR("failed to read(), fd[%d], read size mismatched: ret[%d], expect size[%u]",
- fd, ret, size);
+ if (total != size) {
+ LOG_ERROR("total[%u], expected size[%u]", total, size);
return -1;
}
+ LOG_DEBUG("fd[%d] buffer[%p, size:%u]", fd, buffer, size);
+
return 0;
}