]> git.pond.sub.org Git - empserver/commitdiff
client: Inline ring_to_file() into new send_input()
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 25 Jun 2017 08:27:48 +0000 (10:27 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Aug 2017 09:22:29 +0000 (11:22 +0200)
In preparation for the next commit.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/client/play.c
src/client/ringbuf.c
src/client/ringbuf.h

index da5b2616092cba10b1335381397d7ec3e2c88199..2e0742336fd9971d272bdafd0017bb3dad84feac 100644 (file)
@@ -448,6 +448,21 @@ recv_input(int fd, struct ring *inbuf)
     return res;
 }
 
+static int
+send_input(int fd, struct ring *inbuf)
+{
+    struct iovec iov[2];
+    int cnt;
+    ssize_t res;
+
+    cnt = ring_to_iovec(inbuf, iov);
+    res = writev(fd, iov, cnt);
+    if (res < 0)
+       return res;
+    ring_discard(inbuf, res);
+    return res;
+}
+
 static void
 intr(int sig)
 {
@@ -562,7 +577,7 @@ play(int sock)
 
        /* send it to the server */
        if (FD_ISSET(sock, &wrfd)) {
-           n = ring_to_file(&inbuf, sock);
+           n = send_input(sock, &inbuf);
            if (n < 0) {
                perror("write socket");
                return -1;
index 99d1fe30c247b57195a02024ac47defcc5e51e9a..638c9e4c78040ed6d515633e18f7bc35a61672b5 100644 (file)
@@ -35,7 +35,6 @@
 #include <assert.h>
 #include <stdio.h>
 #include <string.h>
-#include <sys/uio.h>
 #include "ringbuf.h"
 
 /*
@@ -219,7 +218,7 @@ ring_from_file(struct ring *r, int fd)
  * @iov[] must have at least two elements.
  * Return number of elements used (zero for an empty ring buffer).
  */
-static int
+int
 ring_to_iovec(struct ring *r, struct iovec iov[])
 {
     unsigned cons = r->cons % RING_SIZE;
index 4d44a2b939cdc647f3f99fb84f46931211b6b40c..8d16f0cca0be357ce4e38c3482eaaf7f95451a41 100644 (file)
  *  ringbuf.h: Simple ring buffer
  *
  *  Known contributors to this file:
- *     Markus Armbruster, 2007-2015
+ *     Markus Armbruster, 2007-2017
  */
 
 #ifndef RINGBUF_H
 #define RINGBUF_H
 
 #include <stddef.h>
+#include <sys/uio.h>
 
 #define RING_SIZE 4096
 
@@ -61,6 +62,7 @@ extern int ring_putm(struct ring *, void *, size_t);
 extern void ring_discard(struct ring *, int);
 extern int ring_search(struct ring *, char *, int);
 extern int ring_from_file(struct ring *, int fd);
+extern int ring_to_iovec(struct ring *, struct iovec[]);
 extern int ring_to_file(struct ring *, int fd);
 
 #endif