aboutsummaryrefslogtreecommitdiffstats
path: root/v3/glougloud/viz.c
diff options
context:
space:
mode:
Diffstat (limited to 'v3/glougloud/viz.c')
-rw-r--r--v3/glougloud/viz.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/v3/glougloud/viz.c b/v3/glougloud/viz.c
index daf87d1..182e086 100644
--- a/v3/glougloud/viz.c
+++ b/v3/glougloud/viz.c
@@ -6,11 +6,16 @@
struct glougloud_viz {
int pid;
+ struct event_base *evb;
+ struct modules *mods;
redisAsyncContext *rc;
+ struct {
+ struct event *ev;
+ } srv_tcp;
};
struct glougloud *_ggd;
-struct glougloud_viz *_ggdviz;
+struct glougloud_viz *_viz;
void cb_notification(redisAsyncContext *c, void *r, void *privdata)
{
@@ -47,29 +52,25 @@ 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));
- _ggdviz->pid = fork();
- if (_ggdviz->pid > 0)
+ _viz = xcalloc(1, sizeof(struct glougloud_viz));
+ _viz->pid = fork();
+ if (_viz->pid > 0)
return 0;
droppriv(GLOUGLOUD_USER_VIZ, 1, NULL);
- evb = event_base_new();
+ _viz->evb = event_base_new();
+ _viz->mods = modules_load(GLOUGLOUD_MOD_PATH, NULL);
- mods = modules_load(GLOUGLOUD_MOD_PATH, NULL);
-
- rc = redis_connect(evb, cb_connect, cb_disconnect);
- redisAsyncCommand(rc, cb_notification, "event",
+ _viz->rc = redis_connect(_viz->evb, cb_connect, cb_disconnect);
+ redisAsyncCommand(_viz->rc, cb_notification, "event",
"SUBSCRIBE __keyevent@ggd__:*");
- ev = tcp_server_create(evb, &_ggd->viz.serv_ip,
+ _viz->srv_tcp.ev = tcp_server_create(_viz->evb, &_ggd->viz.serv_ip,
_ggd->viz.serv_port, cb_srv_conn, NULL);
+ event_base_dispatch(ev_base);
+
return 0;
}