diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-12-26 21:09:57 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-12-26 21:21:19 -0800 |
| commit | 8bb5f922b8341e6b6e3122092948908dbab6adfc (patch) | |
| tree | 2ff0e0f1108594abce2c4348a6f4404c638647a9 | |
| parent | aaa86e295145c0119252018e7f898f2a91af98ad (diff) | |
| download | nng-8bb5f922b8341e6b6e3122092948908dbab6adfc.tar.gz nng-8bb5f922b8341e6b6e3122092948908dbab6adfc.tar.bz2 nng-8bb5f922b8341e6b6e3122092948908dbab6adfc.zip | |
http: inline aios
| -rw-r--r-- | src/supplemental/http/http_client.c | 22 | ||||
| -rw-r--r-- | src/supplemental/http/http_conn.c | 52 |
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; |
