diff options
Diffstat (limited to 'libglouglou/sendbuf.c')
-rw-r--r-- | libglouglou/sendbuf.c | 140 |
1 files changed, 70 insertions, 70 deletions
diff --git a/libglouglou/sendbuf.c b/libglouglou/sendbuf.c index 4e83294..47c4fd1 100644 --- a/libglouglou/sendbuf.c +++ b/libglouglou/sendbuf.c @@ -14,45 +14,45 @@ static void cb_timer(evutil_socket_t, short, void *); */ struct sendbuf * sendbuf_new(struct event_base *ev_base, int buffer_size, int msec_max, - int (*send_func)(void *, int, void *), void *usrdata) + int (*send_func)(void *, int, void *), void *usrdata) { - struct sendbuf *sbuf = NULL; - struct event *ev_timer; - - sbuf = calloc(1, sizeof(struct sendbuf)); - if (!sbuf) - return NULL; - sbuf->ev_base = ev_base; - sbuf->msec_max = msec_max; - sbuf->buffer_size = buffer_size; - sbuf->send_func = send_func; - sbuf->usrdata = usrdata; - sbuf->buffer = malloc(sbuf->buffer_size); - if (!sbuf->buffer) - goto err; - - ev_timer = evtimer_new(ev_base, cb_timer, sbuf); - sbuf->ev_timer = ev_timer; - sbuf->ev_timer_tv.tv_usec = msec_max * 1000; - evtimer_add(ev_timer, &sbuf->ev_timer_tv); - - return sbuf; + struct sendbuf *sbuf = NULL; + struct event *ev_timer; + + sbuf = calloc(1, sizeof(struct sendbuf)); + if (!sbuf) + return NULL; + sbuf->ev_base = ev_base; + sbuf->msec_max = msec_max; + sbuf->buffer_size = buffer_size; + sbuf->send_func = send_func; + sbuf->usrdata = usrdata; + sbuf->buffer = malloc(sbuf->buffer_size); + if (!sbuf->buffer) + goto err; + + ev_timer = evtimer_new(ev_base, cb_timer, sbuf); + sbuf->ev_timer = ev_timer; + sbuf->ev_timer_tv.tv_usec = msec_max * 1000; + evtimer_add(ev_timer, &sbuf->ev_timer_tv); + + return sbuf; err: - sendbuf_free(sbuf); - return NULL; + sendbuf_free(sbuf); + return NULL; } void sendbuf_free(struct sendbuf *sbuf) { - if (sbuf->ev_timer) - event_del(sbuf->ev_timer); - if (sbuf->buffer && sbuf->send_func) - sendbuf_flush(sbuf); - if (sbuf->buffer) - free(sbuf->buffer); - free(sbuf); + if (sbuf->ev_timer) + event_del(sbuf->ev_timer); + if (sbuf->buffer && sbuf->send_func) + sendbuf_flush(sbuf); + if (sbuf->buffer) + free(sbuf->buffer); + free(sbuf); } /* @@ -63,14 +63,14 @@ sendbuf_free(struct sendbuf *sbuf) int sendbuf_append(struct sendbuf *sbuf, void *token, int size) { - if (sbuf->buffer_pos + size >= sbuf->buffer_size) - if (sendbuf_flush(sbuf) == -1) - return -1; + if (sbuf->buffer_pos + size >= sbuf->buffer_size) + if (sendbuf_flush(sbuf) == -1) + return -1; - memcpy(sbuf->buffer + sbuf->buffer_pos, token, size); - sbuf->buffer_pos = sbuf->buffer_pos + size; + memcpy(sbuf->buffer + sbuf->buffer_pos, token, size); + sbuf->buffer_pos = sbuf->buffer_pos + size; - return size; + return size; } /* @@ -81,16 +81,16 @@ sendbuf_append(struct sendbuf *sbuf, void *token, int size) void * sendbuf_gettoken(struct sendbuf *sbuf, int size) { - void *token; + void *token; - if (sbuf->buffer_pos + size >= sbuf->buffer_size) - if (sendbuf_flush(sbuf) == -1) - return NULL; + if (sbuf->buffer_pos + size >= sbuf->buffer_size) + if (sendbuf_flush(sbuf) == -1) + return NULL; - token = sbuf->buffer + sbuf->buffer_pos; - sbuf->buffer_pos = sbuf->buffer_pos + size; + token = sbuf->buffer + sbuf->buffer_pos; + sbuf->buffer_pos = sbuf->buffer_pos + size; - return token; + return token; } /* @@ -102,28 +102,28 @@ sendbuf_gettoken(struct sendbuf *sbuf, int size) int sendbuf_flush(struct sendbuf *sbuf) { - int tosend, sent; - - if (sbuf->buffer_pos == 0) - return 0; - - sbuf->flushing = 1; - - tosend = sbuf->buffer_pos - sbuf->flushing_pos; - sent = sbuf->send_func(sbuf->buffer + sbuf->flushing_pos, - tosend, sbuf->usrdata); - if (sent == -1) { - // XXX handle error - return -1; - } else if (sent < tosend) { - sbuf->flushing_pos = sbuf->flushing_pos + sent; - return -1; - } - sbuf->buffer_pos = 0; - - sbuf->flushing = 0; - sbuf->flushing_pos = 0; - return 0; + int tosend, sent; + + if (sbuf->buffer_pos == 0) + return 0; + + sbuf->flushing = 1; + + tosend = sbuf->buffer_pos - sbuf->flushing_pos; + sent = sbuf->send_func(sbuf->buffer + sbuf->flushing_pos, + tosend, sbuf->usrdata); + if (sent == -1) { + // XXX handle error + return -1; + } else if (sent < tosend) { + sbuf->flushing_pos = sbuf->flushing_pos + sent; + return -1; + } + sbuf->buffer_pos = 0; + + sbuf->flushing = 0; + sbuf->flushing_pos = 0; + return 0; } @@ -134,9 +134,9 @@ sendbuf_flush(struct sendbuf *sbuf) static void cb_timer(evutil_socket_t fd, short what, void *arg) { - struct sendbuf *sbuf; + struct sendbuf *sbuf; - sbuf = arg; - sendbuf_flush(sbuf); - evtimer_add(sbuf->ev_timer, &sbuf->ev_timer_tv); + sbuf = arg; + sendbuf_flush(sbuf); + evtimer_add(sbuf->ev_timer, &sbuf->ev_timer_tv); } |