aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental/http
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-02-01 16:48:20 -0800
committerGarrett D'Amore <garrett@damore.org>2018-02-01 20:07:09 -0800
commit5e5f814d63d4e00365b0ae726bc18831aa28e88f (patch)
tree804a930d4f9f941cd75e156f169a52e7110ef1e9 /src/supplemental/http
parent3dae30ed5e543dc73fc993334ef56b9b157b9b3c (diff)
downloadnng-5e5f814d63d4e00365b0ae726bc18831aa28e88f.tar.gz
nng-5e5f814d63d4e00365b0ae726bc18831aa28e88f.tar.bz2
nng-5e5f814d63d4e00365b0ae726bc18831aa28e88f.zip
fixes #174 Define public HTTP client API
Diffstat (limited to 'src/supplemental/http')
-rw-r--r--src/supplemental/http/http.h5
-rw-r--r--src/supplemental/http/http_client.c4
-rw-r--r--src/supplemental/http/http_public.c87
3 files changed, 84 insertions, 12 deletions
diff --git a/src/supplemental/http/http.h b/src/supplemental/http/http.h
index e44ddc76..7fadf705 100644
--- a/src/supplemental/http/http.h
+++ b/src/supplemental/http/http.h
@@ -20,6 +20,7 @@ typedef struct nng_http_res nni_http_res;
typedef struct nng_http_conn nni_http_conn;
typedef struct nng_http_handler nni_http_handler;
typedef struct nng_http_server nni_http_server;
+typedef struct nng_http_client nni_http_client;
// These functions are private to the internal framework, and really should
// not be used elsewhere.
@@ -259,9 +260,7 @@ extern const char *nni_http_handler_get_uri(nni_http_handler *);
// Client stuff.
-typedef struct nni_http_client nni_http_client;
-
-extern int nni_http_client_init(nni_http_client **, nni_url *);
+extern int nni_http_client_init(nni_http_client **, const nni_url *);
extern void nni_http_client_fini(nni_http_client *);
// nni_http_client_set_tls sets the TLS configuration. This wipes out
diff --git a/src/supplemental/http/http_client.c b/src/supplemental/http/http_client.c
index 345e5947..918b7b09 100644
--- a/src/supplemental/http/http_client.c
+++ b/src/supplemental/http/http_client.c
@@ -18,7 +18,7 @@
#include "http.h"
-struct nni_http_client {
+struct nng_http_client {
nni_list aios;
nni_mtx mtx;
bool closed;
@@ -95,7 +95,7 @@ nni_http_client_fini(nni_http_client *c)
}
int
-nni_http_client_init(nni_http_client **cp, nni_url *url)
+nni_http_client_init(nni_http_client **cp, const nni_url *url)
{
int rv;
nni_http_client *c;
diff --git a/src/supplemental/http/http_public.c b/src/supplemental/http/http_public.c
index f19b83b1..6c28e835 100644
--- a/src/supplemental/http/http_public.c
+++ b/src/supplemental/http/http_public.c
@@ -377,7 +377,9 @@ nng_http_conn_read(nng_http_conn *conn, nng_aio *aio)
nni_http_read(conn, aio);
#else
NNI_ARG_UNUSED(conn);
- NNI_ARG_UNUSED(aio);
+ if (nni_aio_start(aio, NULL, NULL)) {
+ nni_aio_finish_error(aio, NNG_ENOTSUP);
+ }
#endif
}
@@ -388,7 +390,9 @@ nng_http_conn_read_all(nng_http_conn *conn, nng_aio *aio)
nni_http_read_full(conn, aio);
#else
NNI_ARG_UNUSED(conn);
- NNI_ARG_UNUSED(aio);
+ if (nni_aio_start(aio, NULL, NULL)) {
+ nni_aio_finish_error(aio, NNG_ENOTSUP);
+ }
#endif
}
@@ -399,7 +403,9 @@ nng_http_conn_write(nng_http_conn *conn, nng_aio *aio)
nni_http_write(conn, aio);
#else
NNI_ARG_UNUSED(conn);
- NNI_ARG_UNUSED(aio);
+ if (nni_aio_start(aio, NULL, NULL)) {
+ nni_aio_finish_error(aio, NNG_ENOTSUP);
+ }
#endif
}
@@ -422,7 +428,9 @@ nng_http_conn_write_req(nng_http_conn *conn, nng_http_req *req, nng_aio *aio)
#else
NNI_ARG_UNUSED(conn);
NNI_ARG_UNUSED(req);
- NNI_ARG_UNUSED(aio);
+ if (nni_aio_start(aio, NULL, NULL)) {
+ nni_aio_finish_error(aio, NNG_ENOTSUP);
+ }
#endif
}
@@ -434,7 +442,9 @@ nng_http_conn_write_res(nng_http_conn *conn, nng_http_res *res, nng_aio *aio)
#else
NNI_ARG_UNUSED(conn);
NNI_ARG_UNUSED(res);
- NNI_ARG_UNUSED(aio);
+ if (nni_aio_start(aio, NULL, NULL)) {
+ nni_aio_finish_error(aio, NNG_ENOTSUP);
+ }
#endif
}
@@ -446,7 +456,9 @@ nng_http_conn_read_req(nng_http_conn *conn, nng_http_req *req, nng_aio *aio)
#else
NNI_ARG_UNUSED(conn);
NNI_ARG_UNUSED(req);
- NNI_ARG_UNUSED(aio);
+ if (nni_aio_start(aio, NULL, NULL)) {
+ nni_aio_finish_error(aio, NNG_ENOTSUP);
+ }
#endif
}
@@ -458,7 +470,9 @@ nng_http_conn_read_res(nng_http_conn *conn, nng_http_res *res, nng_aio *aio)
#else
NNI_ARG_UNUSED(conn);
NNI_ARG_UNUSED(res);
- NNI_ARG_UNUSED(aio);
+ if (nni_aio_start(aio, NULL, NULL)) {
+ nni_aio_finish_error(aio, NNG_ENOTSUP);
+ }
#endif
}
@@ -666,3 +680,62 @@ nng_http_server_get_tls(nng_http_server *srv, nng_tls_config **cfgp)
return (NNG_ENOTSUP);
#endif
}
+
+int
+nng_http_client_alloc(nng_http_client **clip, const nng_url *url)
+{
+#ifdef NNG_SUPP_HTTP
+ return (nni_http_client_init(clip, url));
+#else
+ NNI_ARG_UNUSED(clip);
+ NNI_ARG_UNUSED(url);
+ return (NNG_ENOTSUP);
+#endif
+}
+
+void
+nng_http_client_free(nng_http_client *cli)
+{
+#ifdef NNG_SUPP_HTTP
+ nni_http_client_fini(cli);
+#else
+ NNI_ARG_UNUSED(cli);
+#endif
+}
+
+int
+nng_http_client_set_tls(nng_http_client *cli, nng_tls_config *cfg)
+{
+#if defined(NNG_SUPP_HTTP) && defined(NNG_SUPP_TLS)
+ return (nni_http_client_set_tls(cli, cfg));
+#else
+ NNI_ARG_UNUSED(cli);
+ NNI_ARG_UNUSED(cfg);
+ return (NNG_ENOTSUP);
+#endif
+}
+
+int
+nng_http_client_get_tls(nng_http_client *cli, nng_tls_config **cfgp)
+{
+#if defined(NNG_SUPP_HTTP) && defined(NNG_SUPP_TLS)
+ return (nni_http_client_get_tls(cli, cfgp));
+#else
+ NNI_ARG_UNUSED(cli);
+ NNI_ARG_UNUSED(cfgp);
+ return (NNG_ENOTSUP);
+#endif
+}
+
+void
+nng_http_client_connect(nng_http_client *cli, nng_aio *aio)
+{
+#ifdef NNG_SUPP_HTTP
+ return (nni_http_client_connect(cli, aio));
+#else
+ NNI_ARG_UNUSED(cli);
+ if (nni_aio_start(aio, NULL, NULL)) {
+ nni_aio_finish_error(aio, NNG_ENOTSUP);
+ }
+#endif
+}