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;
|
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
|
static void
|
||||||
intr(int sig)
|
intr(int sig)
|
||||||
{
|
{
|
||||||
|
@ -562,7 +577,7 @@ play(int sock)
|
||||||
|
|
||||||
/* send it to the server */
|
/* send it to the server */
|
||||||
if (FD_ISSET(sock, &wrfd)) {
|
if (FD_ISSET(sock, &wrfd)) {
|
||||||
n = ring_to_file(&inbuf, sock);
|
n = send_input(sock, &inbuf);
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
perror("write socket");
|
perror("write socket");
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -35,7 +35,6 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/uio.h>
|
|
||||||
#include "ringbuf.h"
|
#include "ringbuf.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -219,7 +218,7 @@ ring_from_file(struct ring *r, int fd)
|
||||||
* @iov[] must have at least two elements.
|
* @iov[] must have at least two elements.
|
||||||
* Return number of elements used (zero for an empty ring buffer).
|
* Return number of elements used (zero for an empty ring buffer).
|
||||||
*/
|
*/
|
||||||
static int
|
int
|
||||||
ring_to_iovec(struct ring *r, struct iovec iov[])
|
ring_to_iovec(struct ring *r, struct iovec iov[])
|
||||||
{
|
{
|
||||||
unsigned cons = r->cons % RING_SIZE;
|
unsigned cons = r->cons % RING_SIZE;
|
||||||
|
|
|
@ -27,13 +27,14 @@
|
||||||
* ringbuf.h: Simple ring buffer
|
* ringbuf.h: Simple ring buffer
|
||||||
*
|
*
|
||||||
* Known contributors to this file:
|
* Known contributors to this file:
|
||||||
* Markus Armbruster, 2007-2015
|
* Markus Armbruster, 2007-2017
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef RINGBUF_H
|
#ifndef RINGBUF_H
|
||||||
#define RINGBUF_H
|
#define RINGBUF_H
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <sys/uio.h>
|
||||||
|
|
||||||
#define RING_SIZE 4096
|
#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 void ring_discard(struct ring *, int);
|
||||||
extern int ring_search(struct ring *, char *, int);
|
extern int ring_search(struct ring *, char *, int);
|
||||||
extern int ring_from_file(struct ring *, int fd);
|
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);
|
extern int ring_to_file(struct ring *, int fd);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue