diff options
author | Laurent Ghigonis <laurent@p1sec.com> | 2013-08-24 19:41:26 +0200 |
---|---|---|
committer | Laurent Ghigonis <laurent@p1sec.com> | 2013-08-24 19:41:26 +0200 |
commit | cc16719a7564bc70f568ad26477dbc350f5a395e (patch) | |
tree | a525f15adb00fc020dfe6a419b5c6b54b900299e | |
parent | WIP (diff) | |
download | glouglou-cc16719a7564bc70f568ad26477dbc350f5a395e.tar.xz glouglou-cc16719a7564bc70f568ad26477dbc350f5a395e.zip |
WIP cleanup
-rw-r--r-- | v3/glougloud/glougloud.h | 7 | ||||
-rw-r--r-- | v3/glougloud/probes.c | 2 | ||||
-rw-r--r-- | v3/glougloud/redis.c | 10 | ||||
-rw-r--r-- | v3/glougloud/viz.c | 20 |
4 files changed, 27 insertions, 12 deletions
diff --git a/v3/glougloud/glougloud.h b/v3/glougloud/glougloud.h index b588d75..dfc84e9 100644 --- a/v3/glougloud/glougloud.h +++ b/v3/glougloud/glougloud.h @@ -1,6 +1,9 @@ /* glougloud internal */ #include <dnet.h> +#include <event.h> +#include <hiredis/hiredis.h> +#include <hiredis/async.h> #define GLOUGLOUD_USER_PROBES "_glougloud_probe" #define GLOUGLOUD_USER_VIZ "_glougloud_viz" @@ -30,7 +33,9 @@ struct glougloud { int redis_init(struct glougloud *); void redis_shutdown(void); -int redis_connect(struct event_base *); +redisAsyncContext *redis_connect(struct event_base *, + void (*cb_connect)(const redisAsyncContext *, int), + void (*cb_disconnect)(const redisAsyncContext *, int)); /* probes.c */ diff --git a/v3/glougloud/probes.c b/v3/glougloud/probes.c index 9853a8f..e38a81f 100644 --- a/v3/glougloud/probes.c +++ b/v3/glougloud/probes.c @@ -3,7 +3,7 @@ #include "glougloud.h" int -probes_init(void) { +probes_init(struct glougloud *ggd) { return -1; } diff --git a/v3/glougloud/redis.c b/v3/glougloud/redis.c index 4d0f430..c41c780 100644 --- a/v3/glougloud/redis.c +++ b/v3/glougloud/redis.c @@ -64,21 +64,21 @@ redis_shutdown(void) { log_info("redis shutdown ok"); } -redisContext * +redisAsyncContext * redis_connect(struct event_base *evb, void (*cb_connect)(const redisAsyncContext *, int), void (*cb_disconnect)(const redisAsyncContext *, int)) { redisAsyncContext *rc; - rc = redisAsyncConnectUnix(_redis->socket); + rc = redisAsyncConnectUnix(_ggd->redis.socket); if (rc->err) { log_warn("redis connect: %s\n", rc->errstr); - return -1; + return NULL; } redisLibeventAttach(rc, evb); - redisAsyncSetConnectCallback(c, cb_connect); - redisAsyncSetDisconnectCallback(c, cb_disconnect); + redisAsyncSetConnectCallback(rc, cb_connect); + redisAsyncSetDisconnectCallback(rc, cb_disconnect); return rc; } diff --git a/v3/glougloud/viz.c b/v3/glougloud/viz.c index f9c6844..daf87d1 100644 --- a/v3/glougloud/viz.c +++ b/v3/glougloud/viz.c @@ -1,4 +1,4 @@ -#include <dnet.h> +#include <unistd.h> #include <libglouglou.h> @@ -15,7 +15,7 @@ struct glougloud_viz *_ggdviz; void cb_notification(redisAsyncContext *c, void *r, void *privdata) { redisReply *reply = r; - if (!reply == NULL) + if (!reply) return; /* XXX notify modules */ log_debug("redis cb_notification: %s\n", reply->str); @@ -39,10 +39,18 @@ void cb_disconnect(const redisAsyncContext *c, int status) log_info("redis disconnected"); } +void +cb_srv_conn(evutil_socket_t listener, short event, void *arg) +{ + +} + int viz_init(struct glougloud *ggd) { struct event_base *evb; + struct event *ev; struct modules *mods; + redisAsyncContext *rc; _ggd = ggd; _ggdviz = xcalloc(1, sizeof(struct glougloud_viz)); @@ -51,14 +59,16 @@ viz_init(struct glougloud *ggd) { return 0; droppriv(GLOUGLOUD_USER_VIZ, 1, NULL); + evb = event_base_new(); + mods = modules_load(GLOUGLOUD_MOD_PATH, NULL); rc = redis_connect(evb, cb_connect, cb_disconnect); - redisAsyncCommand(c, cb_notification, "event", + redisAsyncCommand(rc, cb_notification, "event", "SUBSCRIBE __keyevent@ggd__:*"); - ev = tcp_server_create(evb, _ggd->viz.serv_ip, - _ggd->viz.serv_port); + ev = tcp_server_create(evb, &_ggd->viz.serv_ip, + _ggd->viz.serv_port, cb_srv_conn, NULL); return 0; } |