]> git.saurik.com Git - redis.git/commitdiff
Support for all the redis.conf fields in CONFIG GET. config.c refactored a bit.
authorantirez <antirez@gmail.com>
Thu, 8 Mar 2012 11:14:23 +0000 (12:14 +0100)
committerantirez <antirez@gmail.com>
Thu, 8 Mar 2012 11:14:23 +0000 (12:14 +0100)
src/config.c

index 6befca8ffb96e6d4f1006c82134cf64c1441b54b..8d8fcda74e745ab1ce83e9f70b837a1aae34f290 100644 (file)
@@ -614,6 +614,12 @@ void configSetCommand(redisClient *c) {
 
         if (yn == -1) goto badfmt;
         server.stop_writes_on_bgsave_err = yn;
+    } else if (!strcasecmp(c->argv[2]->ptr,"repl-ping-slave-period")) {
+        if (getLongLongFromObject(o,&ll) == REDIS_ERR || ll <= 0) goto badfmt;
+        server.repl_ping_slave_period = ll;
+    } else if (!strcasecmp(c->argv[2]->ptr,"repl-timeout")) {
+        if (getLongLongFromObject(o,&ll) == REDIS_ERR || ll <= 0) goto badfmt;
+        server.repl_timeout = ll;
     } else {
         addReplyErrorFormat(c,"Unsupported CONFIG parameter: %s",
             (char*)c->argv[2]->ptr);
@@ -628,6 +634,31 @@ badfmt: /* Bad format errors */
             (char*)c->argv[2]->ptr);
 }
 
+#define config_get_string_field(_name,_var) do { \
+    if (stringmatch(pattern,_name,0)) { \
+        addReplyBulkCString(c,_name); \
+        addReplyBulkCString(c,_var ? _var : ""); \
+        matches++; \
+    } \
+} while(0);
+
+#define config_get_bool_field(_name,_var) do { \
+    if (stringmatch(pattern,_name,0)) { \
+        addReplyBulkCString(c,_name); \
+        addReplyBulkCString(c,_var ? "yes" : "no"); \
+        matches++; \
+    } \
+} while(0);
+
+#define config_get_numerical_field(_name,_var) do { \
+    if (stringmatch(pattern,_name,0)) { \
+        ll2string(buf,sizeof(buf),_var); \
+        addReplyBulkCString(c,_name); \
+        addReplyBulkCString(c,buf); \
+        matches++; \
+    } \
+} while(0);
+
 void configGetCommand(redisClient *c) {
     robj *o = c->argv[2];
     void *replylen = addDeferredMultiBulkLength(c);
@@ -636,6 +667,66 @@ void configGetCommand(redisClient *c) {
     int matches = 0;
     redisAssertWithInfo(c,o,o->encoding == REDIS_ENCODING_RAW);
 
+    /* String values */
+    config_get_string_field("dbfilename",server.rdb_filename);
+    config_get_string_field("requirepass",server.requirepass);
+    config_get_string_field("masterauth",server.requirepass);
+    config_get_string_field("bind",server.bindaddr);
+    config_get_string_field("unixsocket",server.unixsocket);
+    config_get_string_field("logfile",server.logfile);
+    config_get_string_field("pidfile",server.pidfile);
+
+    /* Numerical values */
+    config_get_numerical_field("maxmemory",server.maxmemory);
+    config_get_numerical_field("maxmemory-samples",server.maxmemory_samples);
+    config_get_numerical_field("timeout",server.maxidletime);
+    config_get_numerical_field("auto-aof-rewrite-percentage",
+            server.aof_rewrite_perc);
+    config_get_numerical_field("auto-aof-rewrite-min-size",
+            server.aof_rewrite_min_size);
+    config_get_numerical_field("hash-max-zipmap-entries",
+            server.hash_max_zipmap_entries);
+    config_get_numerical_field("hash-max-zipmap-value",
+            server.hash_max_zipmap_value);
+    config_get_numerical_field("list-max-ziplist-entries",
+            server.list_max_ziplist_entries);
+    config_get_numerical_field("list-max-ziplist-value",
+            server.list_max_ziplist_value);
+    config_get_numerical_field("set-max-intset-entries",
+            server.set_max_intset_entries);
+    config_get_numerical_field("zset-max-ziplist-entries",
+            server.zset_max_ziplist_entries);
+    config_get_numerical_field("zset-max-ziplist-value",
+            server.zset_max_ziplist_value);
+    config_get_numerical_field("lua-time-limit",server.lua_time_limit);
+    config_get_numerical_field("slowlog-log-slower-than",
+            server.slowlog_log_slower_than);
+    config_get_numerical_field("slowlog-max-len",
+            server.slowlog_max_len);
+    config_get_numerical_field("port",server.port);
+    config_get_numerical_field("databases",server.dbnum);
+    config_get_numerical_field("repl-ping-slave-period",server.repl_ping_slave_period);
+    config_get_numerical_field("repl-timeout",server.repl_timeout);
+    config_get_numerical_field("maxclients",server.maxclients);
+
+    /* Bool (yes/no) values */
+    config_get_bool_field("no-appendfsync-on-rewrite",
+            server.aof_no_fsync_on_rewrite);
+    config_get_bool_field("slave-serve-stale-data",
+            server.repl_serve_stale_data);
+    config_get_bool_field("stop-writes-on-bgsave-error",
+            server.stop_writes_on_bgsave_err);
+    config_get_bool_field("daemonize", server.daemonize);
+    config_get_bool_field("rdbcompression", server.rdb_compression);
+    config_get_bool_field("activerehashing", server.activerehashing);
+
+    /* Everything we can't handle with macros follows. */
+
+    if (stringmatch(pattern,"appendonly",0)) {
+        addReplyBulkCString(c,"appendonly");
+        addReplyBulkCString(c,server.aof_state == REDIS_AOF_OFF ? "no" : "yes");
+        matches++;
+    }
     if (stringmatch(pattern,"dir",0)) {
         char buf[1024];
 
@@ -646,27 +737,6 @@ void configGetCommand(redisClient *c) {
         addReplyBulkCString(c,buf);
         matches++;
     }
-    if (stringmatch(pattern,"dbfilename",0)) {
-        addReplyBulkCString(c,"dbfilename");
-        addReplyBulkCString(c,server.rdb_filename);
-        matches++;
-    }
-    if (stringmatch(pattern,"requirepass",0)) {
-        addReplyBulkCString(c,"requirepass");
-        addReplyBulkCString(c,server.requirepass);
-        matches++;
-    }
-    if (stringmatch(pattern,"masterauth",0)) {
-        addReplyBulkCString(c,"masterauth");
-        addReplyBulkCString(c,server.masterauth);
-        matches++;
-    }
-    if (stringmatch(pattern,"maxmemory",0)) {
-        ll2string(buf,sizeof(buf),server.maxmemory);
-        addReplyBulkCString(c,"maxmemory");
-        addReplyBulkCString(c,buf);
-        matches++;
-    }
     if (stringmatch(pattern,"maxmemory-policy",0)) {
         char *s;
 
@@ -683,28 +753,6 @@ void configGetCommand(redisClient *c) {
         addReplyBulkCString(c,s);
         matches++;
     }
-    if (stringmatch(pattern,"maxmemory-samples",0)) {
-        ll2string(buf,sizeof(buf),server.maxmemory_samples);
-        addReplyBulkCString(c,"maxmemory-samples");
-        addReplyBulkCString(c,buf);
-        matches++;
-    }
-    if (stringmatch(pattern,"timeout",0)) {
-        ll2string(buf,sizeof(buf),server.maxidletime);
-        addReplyBulkCString(c,"timeout");
-        addReplyBulkCString(c,buf);
-        matches++;
-    }
-    if (stringmatch(pattern,"appendonly",0)) {
-        addReplyBulkCString(c,"appendonly");
-        addReplyBulkCString(c,server.aof_state == REDIS_AOF_OFF ? "no" : "yes");
-        matches++;
-    }
-    if (stringmatch(pattern,"no-appendfsync-on-rewrite",0)) {
-        addReplyBulkCString(c,"no-appendfsync-on-rewrite");
-        addReplyBulkCString(c,server.aof_no_fsync_on_rewrite ? "yes" : "no");
-        matches++;
-    }
     if (stringmatch(pattern,"appendfsync",0)) {
         char *policy;
 
@@ -734,71 +782,6 @@ void configGetCommand(redisClient *c) {
         sdsfree(buf);
         matches++;
     }
-    if (stringmatch(pattern,"auto-aof-rewrite-percentage",0)) {
-        addReplyBulkCString(c,"auto-aof-rewrite-percentage");
-        addReplyBulkLongLong(c,server.aof_rewrite_perc);
-        matches++;
-    }
-    if (stringmatch(pattern,"auto-aof-rewrite-min-size",0)) {
-        addReplyBulkCString(c,"auto-aof-rewrite-min-size");
-        addReplyBulkLongLong(c,server.aof_rewrite_min_size);
-        matches++;
-    }
-    if (stringmatch(pattern,"slave-serve-stale-data",0)) {
-        addReplyBulkCString(c,"slave-serve-stale-data");
-        addReplyBulkCString(c,server.repl_serve_stale_data ? "yes" : "no");
-        matches++;
-    }
-    if (stringmatch(pattern,"hash-max-zipmap-entries",0)) {
-        addReplyBulkCString(c,"hash-max-zipmap-entries");
-        addReplyBulkLongLong(c,server.hash_max_zipmap_entries);
-        matches++;
-    }
-    if (stringmatch(pattern,"hash-max-zipmap-value",0)) {
-        addReplyBulkCString(c,"hash-max-zipmap-value");
-        addReplyBulkLongLong(c,server.hash_max_zipmap_value);
-        matches++;
-    }
-    if (stringmatch(pattern,"list-max-ziplist-entries",0)) {
-        addReplyBulkCString(c,"list-max-ziplist-entries");
-        addReplyBulkLongLong(c,server.list_max_ziplist_entries);
-        matches++;
-    }
-    if (stringmatch(pattern,"list-max-ziplist-value",0)) {
-        addReplyBulkCString(c,"list-max-ziplist-value");
-        addReplyBulkLongLong(c,server.list_max_ziplist_value);
-        matches++;
-    }
-    if (stringmatch(pattern,"set-max-intset-entries",0)) {
-        addReplyBulkCString(c,"set-max-intset-entries");
-        addReplyBulkLongLong(c,server.set_max_intset_entries);
-        matches++;
-    }
-    if (stringmatch(pattern,"zset-max-ziplist-entries",0)) {
-        addReplyBulkCString(c,"zset-max-ziplist-entries");
-        addReplyBulkLongLong(c,server.zset_max_ziplist_entries);
-        matches++;
-    }
-    if (stringmatch(pattern,"zset-max-ziplist-value",0)) {
-        addReplyBulkCString(c,"zset-max-ziplist-value");
-        addReplyBulkLongLong(c,server.zset_max_ziplist_value);
-        matches++;
-    }
-    if (stringmatch(pattern,"lua-time-limit",0)) {
-        addReplyBulkCString(c,"lua-time-limit");
-        addReplyBulkLongLong(c,server.lua_time_limit);
-        matches++;
-    }
-    if (stringmatch(pattern,"slowlog-log-slower-than",0)) {
-        addReplyBulkCString(c,"slowlog-log-slower-than");
-        addReplyBulkLongLong(c,server.slowlog_log_slower_than);
-        matches++;
-    }
-    if (stringmatch(pattern,"slowlog-max-len",0)) {
-        addReplyBulkCString(c,"slowlog-max-len");
-        addReplyBulkLongLong(c,server.slowlog_max_len);
-        matches++;
-    }
     if (stringmatch(pattern,"loglevel",0)) {
         char *s;
 
@@ -831,9 +814,23 @@ void configGetCommand(redisClient *c) {
         sdsfree(buf);
         matches++;
     }
-    if (stringmatch(pattern,"stop-writes-on-bgsave-error",0)) {
-        addReplyBulkCString(c,"stop-writes-on-bgsave-error");
-        addReplyBulkCString(c,server.stop_writes_on_bgsave_err ? "yes" : "no");
+    if (stringmatch(pattern,"unixsocketperm",0)) {
+        char buf[32];
+        snprintf(buf,sizeof(buf),"%o",server.unixsocketperm);
+        addReplyBulkCString(c,"unixsocketperm");
+        addReplyBulkCString(c,buf);
+        matches++;
+    }
+    if (stringmatch(pattern,"slaveof",0)) {
+        char buf[256];
+
+        addReplyBulkCString(c,"slaveof");
+        if (server.masterhost)
+            snprintf(buf,sizeof(buf),"%s %d",
+                server.masterhost, server.masterport);
+        else
+            buf[0] = '\0';
+        addReplyBulkCString(c,buf);
         matches++;
     }
     setDeferredMultiBulkLength(c,replylen,matches*2);