diff options
author | Christophe Fergeau <cfergeau@redhat.com> | 2014-03-14 17:43:55 +0100 |
---|---|---|
committer | Christophe Fergeau <cfergeau@redhat.com> | 2014-04-16 17:11:38 +0200 |
commit | 3dd4723e48da6de886963d9781bf53dea65a7e42 (patch) | |
tree | 9c24e5f4308055e6f9998e0c3a77ed066f015c84 | |
parent | dc017bb9ae934594289b99a67d929f075e60819f (diff) |
Add reds_stream_set_async_error_handler() helper
This replaces async_read_set_error_handler() which was unused. This sets a
callback to be called when an async operation fails.
We could pass the error_handler to each reds_stream_async_read() call, but as
we will be using the same one for all async calls, it's more convenient to set it
once and for all.
AsyncRead is going to be private to reds_stream.c in one of the next
commits, and the error handler will need to be set from reds.c,
hence the move to a public RedsStream method.
-rw-r--r-- | server/reds_stream.c | 7 | ||||
-rw-r--r-- | server/reds_stream.h | 5 |
2 files changed, 5 insertions, 7 deletions
diff --git a/server/reds_stream.c b/server/reds_stream.c index 070a3d55..b9cddd02 100644 --- a/server/reds_stream.c +++ b/server/reds_stream.c @@ -389,11 +389,10 @@ int reds_stream_enable_ssl(RedsStream *stream, SSL_CTX *ctx) return reds_stream_ssl_accept(stream); } -void async_read_set_error_handler(AsyncRead *async, - AsyncReadError error_handler, - void *opaque) +void reds_stream_set_async_error_handler(RedsStream *stream, + AsyncReadError error_handler) { - async->error = error_handler; + stream->priv->async_read.error = error_handler; } static inline void async_read_clear_handlers(AsyncRead *obj) diff --git a/server/reds_stream.h b/server/reds_stream.h index 866679ae..a5b7a17e 100644 --- a/server/reds_stream.h +++ b/server/reds_stream.h @@ -39,9 +39,6 @@ typedef struct AsyncRead { } AsyncRead; void async_read_handler(int fd, int event, void *data); -void async_read_set_error_handler(AsyncRead *async, - AsyncReadError error_handler, - void *opaque); typedef struct RedsStreamPrivate RedsStreamPrivate; @@ -67,6 +64,8 @@ typedef enum { ssize_t reds_stream_read(RedsStream *s, void *buf, size_t nbyte); void reds_stream_async_read(RedsStream *stream, uint8_t *data, size_t size, AsyncReadDone read_done_cb, void *opaque); +void reds_stream_set_async_error_handler(RedsStream *stream, + AsyncReadError error_handler); ssize_t reds_stream_write(RedsStream *s, const void *buf, size_t nbyte); ssize_t reds_stream_writev(RedsStream *s, const struct iovec *iov, int iovcnt); bool reds_stream_write_all(RedsStream *stream, const void *in_buf, size_t n); |