summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2016-08-02 11:32:00 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2016-08-02 11:32:00 +0200
commit904f490e7d70653bb54b53d3bc7c7bead45be844 (patch)
treed0c3287888e65f7d049c5367bef1970b1455c49d
parented943b6facb90cfecf3008751e3b0ba5175998f6 (diff)
adds vectored function for text and binary
Change-Id: I441624cf07fc783f54d1bc9613fee5f9b842e140 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--src/afb-ws.c28
-rw-r--r--src/afb-ws.h3
2 files changed, 31 insertions, 0 deletions
diff --git a/src/afb-ws.c b/src/afb-ws.c
index 53fb60ae..a7582794 100644
--- a/src/afb-ws.c
+++ b/src/afb-ws.c
@@ -282,6 +282,20 @@ int afb_ws_texts(struct afb_ws *ws, ...)
}
/*
+ * Sends a text data described in the 'count' 'iovec' to the endpoint of 'ws'.
+ * Returns 0 on success or -1 in case of error.
+ */
+int afb_ws_text_v(struct afb_ws *ws, const struct iovec *iovec, int count)
+{
+ if (ws->ws == NULL) {
+ /* disconnected */
+ errno = EPIPE;
+ return -1;
+ }
+ return websock_text_v(ws->ws, 1, iovec, count);
+}
+
+/*
* Sends a binary 'data' of 'length' to the endpoint of 'ws'.
* Returns 0 on success or -1 in case of error.
*/
@@ -296,6 +310,20 @@ int afb_ws_binary(struct afb_ws *ws, const void *data, size_t length)
}
/*
+ * Sends a binary data described in the 'count' 'iovec' to the endpoint of 'ws'.
+ * Returns 0 on success or -1 in case of error.
+ */
+int afb_ws_binary_v(struct afb_ws *ws, const struct iovec *iovec, int count)
+{
+ if (ws->ws == NULL) {
+ /* disconnected */
+ errno = EPIPE;
+ return -1;
+ }
+ return websock_binary_v(ws->ws, 1, iovec, count);
+}
+
+/*
* callback for writing data
*/
static ssize_t aws_writev(struct afb_ws *ws, const struct iovec *iov, int iovcnt)
diff --git a/src/afb-ws.h b/src/afb-ws.h
index cf01b051..af435ea6 100644
--- a/src/afb-ws.h
+++ b/src/afb-ws.h
@@ -19,6 +19,7 @@
struct afb_ws;
struct sd_event;
+struct iovec;
struct afb_ws_itf
{
@@ -37,4 +38,6 @@ extern int afb_ws_error(struct afb_ws *ws, uint16_t code, const char *reason);
extern int afb_ws_text(struct afb_ws *ws, const char *text, size_t length);
extern int afb_ws_texts(struct afb_ws *ws, ...);
extern int afb_ws_binary(struct afb_ws *ws, const void *data, size_t length);
+extern int afb_ws_text_v(struct afb_ws *ws, const struct iovec *iovec, int count);
+extern int afb_ws_binary_v(struct afb_ws *ws, const struct iovec *iovec, int count);