client: Inline ring_to_file() into new send_input()

In preparation for the next commit.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2017-06-25 10:27:48 +02:00
parent 53c8794ef8
commit 26372eb85d
3 changed files with 20 additions and 4 deletions

View 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;

View 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;

View file

@ -27,13 +27,14 @@
* 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