From 94d722d144b92cf64f7be022f542e0cef3341780 Mon Sep 17 00:00:00 2001 From: Laurent Ghigonis Date: Sat, 1 Dec 2012 04:22:41 +0100 Subject: work in progress on implementing a send buffer --- libglouglou/libglouglou.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'libglouglou/libglouglou.c') diff --git a/libglouglou/libglouglou.c b/libglouglou/libglouglou.c index c2c284a..c9c0df8 100644 --- a/libglouglou/libglouglou.c +++ b/libglouglou/libglouglou.c @@ -13,6 +13,7 @@ #include #include "libglouglou.h" +#include "sendbuf.h" #define error(fmt, ...) \ if (_verbosity >= 0) \ @@ -58,6 +59,7 @@ gg_server_start(struct event_base *ev_base, char *ip, int port, struct gg_server *srv; struct sockaddr_in sock_addr; struct event *ev; + struct sendbuf *sbuf; int s; int sock_on = 1; @@ -68,6 +70,13 @@ gg_server_start(struct event_base *ev_base, char *ip, int port, srv->handle_conn = handle_conn; srv->handle_packet = handle_packet; srv->usrdata = usrdata; + + sbuf = sendbuf_init(ev_base, PACKET_SNDBUF_MAX * 2, PACKET_SNDBUF_MAX, 200, + cb_srv_send, srv); + if (!sbuf) + goto err; + srv->sbuf = sbuf; + s = socket(AF_INET, SOCK_DGRAM, 0); if (s < 0) goto err; @@ -98,13 +107,25 @@ err: return NULL; } +int +cb_srv_send(void *data, int size, void *usrdata) +{ + struct gg_server *srv; + + srv = usrdata; +} + int gg_server_send(struct gg_server *srv, struct gg_packet *pkt, struct gg_user *usr) { static struct gg_packet *newpkt; int size; - newpkt = pkt_encode(pkt, &size); + // XXX IN PROGRESS get size before + newpkt = sendbuf_gettoken(srv->sndbuf, size); + + pkt_encode(pkt, &size, newpkt); + if (!newpkt) return -1; return server_send(srv, usr, newpkt, size); -- cgit v1.2.3-59-g8ed1b