summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: ad77ec3)
raw | patch | inline | side by side (parent: ad77ec3)
author | Sebastian Harl <sh@tokkee.org> | |
Sun, 11 Jan 2015 13:43:14 +0000 (14:43 +0100) | ||
committer | Sebastian Harl <sh@tokkee.org> | |
Sun, 11 Jan 2015 13:43:14 +0000 (14:43 +0100) |
src/client/sock.c | patch | blob | history |
diff --git a/src/client/sock.c b/src/client/sock.c
index 0d734f3a9462ba74bb7405beb94c9fdeecb67d8a..336d0620539531e0428525ad3607a52b1315405e 100644 (file)
--- a/src/client/sock.c
+++ b/src/client/sock.c
char *address;
int fd;
bool eof;
+
+ ssize_t (*read)(sdb_client_t *, sdb_strbuf_t *, size_t);
+ ssize_t (*write)(sdb_client_t *, const void *, size_t);
};
/*
* private helper functions
*/
+static ssize_t
+client_read(sdb_client_t *client, sdb_strbuf_t *buf, size_t n)
+{
+ return sdb_strbuf_read(buf, client->fd, n);
+} /* client_read */
+
+static ssize_t
+client_write(sdb_client_t *client, const void *buf, size_t n)
+{
+ return sdb_write(client->fd, n, buf);
+} /* client_write */
+
static int
connect_unixsock(sdb_client_t *client, const char *address)
{
client->fd = -1;
client->eof = 1;
+ client->read = client_read;
+ client->write = client_write;
+
client->address = strdup(address);
if (! client->address) {
sdb_client_destroy(client);
if (sdb_proto_marshal(buf, sizeof(buf), cmd, msg_len, msg) < 0)
return -1;
- return sdb_write(client->fd, sizeof(buf), buf);
+ return client->write(client, buf, sizeof(buf));
} /* sdb_client_send */
ssize_t
return -1;
errno = 0;
- status = sdb_strbuf_read(buf, client->fd, req);
+ status = client->read(client, buf, req);
if (status < 0) {
if ((errno == EAGAIN) || (errno == EWOULDBLOCK))
continue;