aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Ghigonis <laurent@p1sec.com>2013-08-24 19:41:26 +0200
committerLaurent Ghigonis <laurent@p1sec.com>2013-08-24 19:41:26 +0200
commitcc16719a7564bc70f568ad26477dbc350f5a395e (patch)
treea525f15adb00fc020dfe6a419b5c6b54b900299e
parentWIP (diff)
downloadglouglou-cc16719a7564bc70f568ad26477dbc350f5a395e.tar.xz
glouglou-cc16719a7564bc70f568ad26477dbc350f5a395e.zip
WIP cleanup
-rw-r--r--v3/glougloud/glougloud.h7
-rw-r--r--v3/glougloud/probes.c2
-rw-r--r--v3/glougloud/redis.c10
-rw-r--r--v3/glougloud/viz.c20
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;
}