aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental/http
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-12-26 21:09:57 -0800
committerGarrett D'Amore <garrett@damore.org>2024-12-26 21:21:19 -0800
commit8bb5f922b8341e6b6e3122092948908dbab6adfc (patch)
tree2ff0e0f1108594abce2c4348a6f4404c638647a9 /src/supplemental/http
parentaaa86e295145c0119252018e7f898f2a91af98ad (diff)
downloadnng-8bb5f922b8341e6b6e3122092948908dbab6adfc.tar.gz
nng-8bb5f922b8341e6b6e3122092948908dbab6adfc.tar.bz2
nng-8bb5f922b8341e6b6e3122092948908dbab6adfc.zip
http: inline aios
Diffstat (limited to 'src/supplemental/http')
-rw-r--r--src/supplemental/http/http_client.c22
-rw-r--r--src/supplemental/http/http_conn.c52
2 files changed, 33 insertions, 41 deletions
diff --git a/src/supplemental/http/http_client.c b/src/supplemental/http/http_client.c
index e2a8be3a..003e7fc9 100644
--- a/src/supplemental/http/http_client.c
+++ b/src/supplemental/http/http_client.c
@@ -25,7 +25,7 @@ struct nng_http_client {
nni_list aios;
nni_mtx mtx;
bool closed;
- nni_aio *aio;
+ nni_aio aio;
nng_stream_dialer *dialer;
};
@@ -35,7 +35,7 @@ http_dial_start(nni_http_client *c)
if (nni_list_empty(&c->aios)) {
return;
}
- nng_stream_dialer_dial(c->dialer, c->aio);
+ nng_stream_dialer_dial(c->dialer, &c->aio);
}
static void
@@ -48,13 +48,13 @@ http_dial_cb(void *arg)
nni_http_conn *conn;
nni_mtx_lock(&c->mtx);
- rv = nni_aio_result(c->aio);
+ rv = nni_aio_result(&c->aio);
if ((aio = nni_list_first(&c->aios)) == NULL) {
// User abandoned request, and no residuals left.
nni_mtx_unlock(&c->mtx);
if (rv == 0) {
- stream = nni_aio_get_output(c->aio, 0);
+ stream = nni_aio_get_output(&c->aio, 0);
nng_stream_free(stream);
}
return;
@@ -69,7 +69,7 @@ http_dial_cb(void *arg)
}
nni_aio_list_remove(aio);
- stream = nni_aio_get_output(c->aio, 0);
+ stream = nni_aio_get_output(&c->aio, 0);
NNI_ASSERT(stream != NULL);
rv = nni_http_conn_init(&conn, stream);
@@ -89,9 +89,9 @@ http_dial_cb(void *arg)
void
nni_http_client_fini(nni_http_client *c)
{
- nni_aio_stop(c->aio);
+ nni_aio_stop(&c->aio);
nng_stream_dialer_stop(c->dialer);
- nni_aio_free(c->aio);
+ nni_aio_fini(&c->aio);
nng_stream_dialer_free(c->dialer);
nni_mtx_fini(&c->mtx);
NNI_FREE_STRUCT(c);
@@ -122,17 +122,13 @@ nni_http_client_init(nni_http_client **cp, const nng_url *url)
}
nni_mtx_init(&c->mtx);
nni_aio_list_init(&c->aios);
+ nni_aio_init(&c->aio, http_dial_cb, c);
if ((rv = nng_stream_dialer_alloc_url(&c->dialer, &my_url)) != 0) {
nni_http_client_fini(c);
return (rv);
}
- if ((rv = nni_aio_alloc(&c->aio, http_dial_cb, c)) != 0) {
- nni_http_client_fini(c);
- return (rv);
- }
-
*cp = c;
return (0);
}
@@ -174,7 +170,7 @@ http_dial_cancel(nni_aio *aio, void *arg, int rv)
nni_aio_finish_error(aio, rv);
}
if (nni_list_empty(&c->aios)) {
- nni_aio_abort(c->aio, rv);
+ nni_aio_abort(&c->aio, rv);
}
nni_mtx_unlock(&c->mtx);
}
diff --git a/src/supplemental/http/http_conn.c b/src/supplemental/http/http_conn.c
index b30d2d42..44ad3a01 100644
--- a/src/supplemental/http/http_conn.c
+++ b/src/supplemental/http/http_conn.c
@@ -49,8 +49,8 @@ struct nng_http_conn {
nni_aio *rd_uaio; // user aio for read
nni_aio *wr_uaio; // user aio for write
- nni_aio *rd_aio; // bottom half read operations
- nni_aio *wr_aio; // bottom half write operations
+ nni_aio rd_aio; // bottom half read operations
+ nni_aio wr_aio; // bottom half write operations
nni_mtx mtx;
@@ -87,8 +87,8 @@ http_close(nni_http_conn *conn)
}
conn->closed = true;
- nni_aio_close(conn->wr_aio);
- nni_aio_close(conn->rd_aio);
+ nni_aio_close(&conn->wr_aio);
+ nni_aio_close(&conn->rd_aio);
if ((aio = conn->rd_uaio) != NULL) {
conn->rd_uaio = NULL;
@@ -175,8 +175,8 @@ http_rd_buf(nni_http_conn *conn, nni_aio *aio)
// a full transaction on a FULL read, or were not even able
// to get *any* data for a partial RAW read.)
conn->rd_buffered = false;
- nni_aio_set_iov(conn->rd_aio, nio, iov);
- nng_stream_recv(conn->sock, conn->rd_aio);
+ nni_aio_set_iov(&conn->rd_aio, nio, iov);
+ nng_stream_recv(conn->sock, &conn->rd_aio);
return (NNG_EAGAIN);
case HTTP_RD_REQ:
@@ -191,8 +191,8 @@ http_rd_buf(nni_http_conn *conn, nni_aio *aio)
iov1.iov_buf = conn->rd_buf + conn->rd_put;
iov1.iov_len = conn->rd_bufsz - conn->rd_put;
conn->rd_buffered = true;
- nni_aio_set_iov(conn->rd_aio, 1, &iov1);
- nng_stream_recv(conn->sock, conn->rd_aio);
+ nni_aio_set_iov(&conn->rd_aio, 1, &iov1);
+ nng_stream_recv(conn->sock, &conn->rd_aio);
}
return (rv);
@@ -208,8 +208,8 @@ http_rd_buf(nni_http_conn *conn, nni_aio *aio)
iov1.iov_buf = conn->rd_buf + conn->rd_put;
iov1.iov_len = conn->rd_bufsz - conn->rd_put;
conn->rd_buffered = true;
- nni_aio_set_iov(conn->rd_aio, 1, &iov1);
- nng_stream_recv(conn->sock, conn->rd_aio);
+ nni_aio_set_iov(&conn->rd_aio, 1, &iov1);
+ nng_stream_recv(conn->sock, &conn->rd_aio);
}
return (rv);
@@ -225,8 +225,8 @@ http_rd_buf(nni_http_conn *conn, nni_aio *aio)
iov1.iov_buf = conn->rd_buf + conn->rd_put;
iov1.iov_len = conn->rd_bufsz - conn->rd_put;
conn->rd_buffered = true;
- nni_aio_set_iov(conn->rd_aio, 1, &iov1);
- nng_stream_recv(conn->sock, conn->rd_aio);
+ nni_aio_set_iov(&conn->rd_aio, 1, &iov1);
+ nng_stream_recv(conn->sock, &conn->rd_aio);
}
return (rv);
}
@@ -274,7 +274,7 @@ static void
http_rd_cb(void *arg)
{
nni_http_conn *conn = arg;
- nni_aio *aio = conn->rd_aio;
+ nni_aio *aio = &conn->rd_aio;
nni_aio *uaio;
size_t cnt;
int rv;
@@ -351,7 +351,7 @@ http_rd_cancel(nni_aio *aio, void *arg, int rv)
nni_mtx_lock(&conn->mtx);
if (aio == conn->rd_uaio) {
conn->rd_uaio = NULL;
- nni_aio_abort(conn->rd_aio, rv);
+ nni_aio_abort(&conn->rd_aio, rv);
nni_aio_finish_error(aio, rv);
} else if (nni_aio_list_active(aio)) {
nni_aio_list_remove(aio);
@@ -395,15 +395,15 @@ http_wr_start(nni_http_conn *conn)
}
nni_aio_get_iov(aio, &niov, &iov);
- nni_aio_set_iov(conn->wr_aio, niov, iov);
- nng_stream_send(conn->sock, conn->wr_aio);
+ nni_aio_set_iov(&conn->wr_aio, niov, iov);
+ nng_stream_send(conn->sock, &conn->wr_aio);
}
static void
http_wr_cb(void *arg)
{
nni_http_conn *conn = arg;
- nni_aio *aio = conn->wr_aio;
+ nni_aio *aio = &conn->wr_aio;
nni_aio *uaio;
int rv;
size_t n;
@@ -466,7 +466,7 @@ http_wr_cancel(nni_aio *aio, void *arg, int rv)
nni_mtx_lock(&conn->mtx);
if (aio == conn->wr_uaio) {
conn->wr_uaio = NULL;
- nni_aio_abort(conn->wr_aio, rv);
+ nni_aio_abort(&conn->wr_aio, rv);
nni_aio_finish_error(aio, rv);
} else if (nni_aio_list_active(aio)) {
nni_aio_list_remove(aio);
@@ -640,8 +640,8 @@ nni_http_conn_getopt(
void
nni_http_conn_fini(nni_http_conn *conn)
{
- nni_aio_stop(conn->wr_aio);
- nni_aio_stop(conn->rd_aio);
+ nni_aio_stop(&conn->wr_aio);
+ nni_aio_stop(&conn->rd_aio);
nni_mtx_lock(&conn->mtx);
http_close(conn);
@@ -651,8 +651,8 @@ nni_http_conn_fini(nni_http_conn *conn)
}
nni_mtx_unlock(&conn->mtx);
- nni_aio_free(conn->wr_aio);
- nni_aio_free(conn->rd_aio);
+ nni_aio_fini(&conn->wr_aio);
+ nni_aio_fini(&conn->rd_aio);
nni_free(conn->rd_buf, conn->rd_bufsz);
nni_mtx_fini(&conn->mtx);
NNI_FREE_STRUCT(conn);
@@ -662,7 +662,6 @@ static int
http_init(nni_http_conn **connp, nng_stream *data)
{
nni_http_conn *conn;
- int rv;
if ((conn = NNI_ALLOC_STRUCT(conn)) == NULL) {
return (NNG_ENOMEM);
@@ -677,11 +676,8 @@ http_init(nni_http_conn **connp, nng_stream *data)
}
conn->rd_bufsz = HTTP_BUFSIZE;
- if (((rv = nni_aio_alloc(&conn->wr_aio, http_wr_cb, conn)) != 0) ||
- ((rv = nni_aio_alloc(&conn->rd_aio, http_rd_cb, conn)) != 0)) {
- nni_http_conn_fini(conn);
- return (rv);
- }
+ nni_aio_init(&conn->wr_aio, http_wr_cb, conn);
+ nni_aio_init(&conn->rd_aio, http_rd_cb, conn);
conn->sock = data;