]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add support for expires and flags for inc/dec operators
authorRupa Schomaker <rupa@rupa.com>
Thu, 27 Aug 2009 16:07:36 +0000 (16:07 +0000)
committerRupa Schomaker <rupa@rupa.com>
Thu, 27 Aug 2009 16:07:36 +0000 (16:07 +0000)
expires based on first inc/dec operator, subsequent ones do not
extend the lifetime of the object

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14649 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_memcache/mod_memcache.c

index 849107745be657f01e85c96f6e73c2051b21ed10..a4303df1cec8662d100099918188a538605db80b 100755 (executable)
@@ -44,7 +44,7 @@ SWITCH_MODULE_DEFINITION(mod_memcache, mod_memcache_load, mod_memcache_shutdown,
 static char *SYNTAX = "memcache <set|replace|add> <key> <value> [expiration [flags]]\n"
   "memcache <get|getflags> <key>\n"
   "memcache <delete> <key>\n"
-  "memcache <increment|decrement> <key> [offset]\n"
+  "memcache <increment|decrement> <key> [offset [expires [flags]]]\n"
   "memcache <flush>\n"
   "memcache <status> [verbose]\n";
 
@@ -232,12 +232,20 @@ SWITCH_STANDARD_API(memcache_function)
                        unsigned int offset = 1;
                        switch_bool_t increment = SWITCH_TRUE;
                        char *svalue = NULL;
-                       if(argc > 2) {
+                       if (argc > 2) {
                                offset = (unsigned int)strtol(argv[2], NULL, 10);
                                svalue = argv[2];
                        } else {
                                svalue = "1";
                        }
+                       if(argc > 3) {
+                               expires_str = argv[3];
+                               expires = (time_t)strtol(expires_str, NULL, 10);
+                       }
+                       if(argc > 4) {
+                               flags_str = argv[4];
+                               flags = (uint32_t)strtol(flags_str, NULL, 16);
+                       }
                        
                        if (!strcasecmp(subcmd, "increment")) {
                                increment = SWITCH_TRUE;
@@ -251,7 +259,7 @@ SWITCH_STANDARD_API(memcache_function)
                                   Try to add an appropriate initial value.  If someone else beat
                                   us to it, then redo incr/decr.  Otherwise we're good.
                                */
-                               rc = memcached_add(memcached, key, strlen(key), (increment) ? svalue : "0", strlen(svalue), 0, 0);
+                               rc = memcached_add(memcached, key, strlen(key), (increment) ? svalue : "0", strlen(svalue), expires, flags);
                                if (rc == MEMCACHED_SUCCESS) {
                                        ivalue = (increment) ? offset : 0;
                                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Initialized inc/dec memcache key: %s to value %d\n", key, offset);