From 4676cfebd0629e7a0b6605074898e2c5798cd641 Mon Sep 17 00:00:00 2001 From: Nicolas Favre-Felix Date: Wed, 29 Dec 2010 14:11:51 +0100 Subject: [PATCH] Refactoring. --- cmd.c | 12 +++++++++++- cmd.h | 5 ++++- formats/json.c | 6 +++--- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/cmd.c b/cmd.c index 291c37b..29aed41 100644 --- a/cmd.c +++ b/cmd.c @@ -144,7 +144,7 @@ cmd_run(struct server *s, struct evhttp_request *rq, } /* check if we have to split the connection */ - if(strncasecmp(cmd->argv[0], "SUBSCRIBE", cmd->argv_len[0]) == 0) { + if(cmd_is_subscribe(cmd)) { struct pubsub_client *ps; ps = calloc(1, sizeof(struct pubsub_client)); ps->s = s = server_copy(s); @@ -204,3 +204,13 @@ get_formatting_funtion(struct evkeyvalq *params) { return json_reply; } + +int +cmd_is_subscribe(struct cmd *cmd) { + + if(strncasecmp(cmd->argv[0], "SUBSCRIBE", cmd->argv_len[0]) == 0 || + strncasecmp(cmd->argv[0], "PSUBSCRIBE", cmd->argv_len[0]) == 0) { + return 1; + } + return 0; +} diff --git a/cmd.h b/cmd.h index c067d18..468d630 100644 --- a/cmd.h +++ b/cmd.h @@ -21,7 +21,7 @@ struct cmd { struct evkeyvalq uri_params; - int replied; + int started_responding; }; struct cmd * @@ -37,4 +37,7 @@ cmd_run(struct server *s, struct evhttp_request *rq, formatting_fun get_formatting_funtion(struct evkeyvalq *params); +int +cmd_is_subscribe(struct cmd *cmd); + #endif diff --git a/formats/json.c b/formats/json.c index 1b34379..4c86352 100644 --- a/formats/json.c +++ b/formats/json.c @@ -43,7 +43,7 @@ json_reply(redisAsyncContext *c, void *r, void *privdata) { evbuffer_add(body, jstr, strlen(jstr)); evhttp_add_header(cmd->rq->output_headers, "Content-Type", "application/json"); - if(strncasecmp(cmd->argv[0], "SUBSCRIBE", cmd->argv_len[0]) == 0) { + if(cmd_is_subscribe(cmd)) { redisCallback cb; free_cmd = 0; @@ -53,8 +53,8 @@ json_reply(redisAsyncContext *c, void *r, void *privdata) { __redisPushCallback(&c->replies, &cb); /* start streaming */ - if(cmd->replied == 0) { - cmd->replied = 1; + if(cmd->started_responding == 0) { + cmd->started_responding = 1; evhttp_send_reply_start(cmd->rq, 200, "OK"); } evhttp_send_reply_chunk(cmd->rq, body);