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:
parent
53c8794ef8
commit
26372eb85d
3 changed files with 20 additions and 4 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue