uclient_backend_set_error(cl, UCLIENT_ERROR_TIMEDOUT);
}
+static void __uclient_read_notify(struct uloop_timeout *timeout)
+{
+ struct uclient *cl = container_of(timeout, struct uclient, read_notify);
+
+ if (cl->cb->data_read)
+ cl->cb->data_read(cl);
+}
+
struct uclient *uclient_new(const char *url_str, const char *auth_str, const struct uclient_cb *cb)
{
struct uclient *cl;
cl->url = url;
cl->timeout_msecs = UCLIENT_DEFAULT_TIMEOUT_MS;
cl->connection_timeout.cb = uclient_connection_timeout;
+ cl->read_notify.cb = __uclient_read_notify;
return cl;
}
return cl->backend->read(cl, buf, len);
}
+int uclient_pending_bytes(struct uclient *cl, bool write)
+{
+ if (!cl->backend->pending_bytes)
+ return -1;
+
+ return cl->backend->pending_bytes(cl, write);
+}
+
void uclient_disconnect(struct uclient *cl)
{
uloop_timeout_cancel(&cl->connection_timeout);
uloop_timeout_cancel(&cl->timeout);
+ uloop_timeout_cancel(&cl->read_notify);
if (!cl->backend->disconnect)
return;
cl->eof = false;
cl->error_code = 0;
uloop_timeout_cancel(&cl->timeout);
+ uloop_timeout_cancel(&cl->read_notify);
}
const char * uclient_strerror(unsigned err)