From: visor Date: Tue, 7 Feb 2012 15:03:12 +0000 (+0900) Subject: update memcached function. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7e5848f4b84553bb6397ac0eb9a743b960c2faf5;p=hmh%2Fhhml.git update memcached function. --- diff --git a/bin/MKID.pl b/bin/MKID.pl index c552295..e5697b5 100755 --- a/bin/MKID.pl +++ b/bin/MKID.pl @@ -5,6 +5,7 @@ my @SRCS; my $target = "ml-id.h"; my $targetTmp = "$target-$$"; my $FileList = $ARGV[0]; +my %CClass = ('MLFunc' => 1); foreach (@ARGV) { if (/^-/) { @@ -73,8 +74,9 @@ sub p { open (IN, $hdr); while () { chomp; - if (/class\s+([a-zA-Z0-9_]+)\s*:\s*(public)\s*MLFunc/) { + if (/class\s+([a-zA-Z0-9_]+)\s*:\s*(public)\s*([a-zA-Z0-9_]+)/ && $CClass{$3}) { push (@ID, "c" . $1 . "ID"); + $CClass{$1} = 1; } } close (IN); diff --git a/config.h b/config.h index a8a9722..b8364dc 100644 --- a/config.h +++ b/config.h @@ -17,6 +17,9 @@ #define cmd_rmdir "/bin/rmdir" #define cmd_httpsclient "/usr/web/htvar/bin/httpsclient" #define path_devnull "/dev/null" +#define memcached_ip "127.0.0.1" +#define memcached_port 11211 +#define memcached_socket "memcached/cache.sock" #define SHARE_AUTHDB 1 //#define WIKICOMPAT 1 diff --git a/ext/ml-memcached.cc b/ext/ml-memcached.cc index 6933ebf..0e93bb5 100644 --- a/ext/ml-memcached.cc +++ b/ext/ml-memcached.cc @@ -1,5 +1,6 @@ #include "ml-memcached.h" #include "motorconst.h" +#include "config.h" #include "ml.h" #include "mlenv.h" #include "motorenv.h" @@ -10,10 +11,6 @@ #include #include -#define MEMCACHED_LOCALHOST "127.0.0.1" -#define MEMCACHED_PORT MEMCACHED_DEFAULT_PORT -#define MEMCACHED_SOCKET "memcached/cache.sock" - /*DOC: ==memcached module== @@ -21,21 +18,36 @@ /*DOC: ===$memcached=== - ($memcached [SUBFUNCTION...]) -> VALUE + ($memcached [#unix | :unix BOOL] [#inet | :inet BOOL] [SUBFUNCTION...]) -> VALUE */ //#MFUNC $memcached ml_memcached cMLMemcachedID MNode* ml_memcached (MNode* cell, MlEnv* mlenv) { MNode* arg = cell->cdr (); MLMemcached obj (mlenv); + bool finet = false; MNodePtr ans; memcached_return_t rc; + std::vector keywords; + static paramList kwlist[] = { + {CharConst ("unix"), true}, + {CharConst ("inet"), true}, + {NULL, 0, 0} + }; if (obj.mem == NULL) { throw (ustring (CharConst ("can't connect to the memcached server"))); } -// rc = memcached_server_add (obj.mem, MEMCACHED_LOCALHOST, MEMCACHED_PORT); - rc = memcached_server_add_unix_socket (obj.mem, mlenv->env->path_to_etc (ustring (CharConst (MEMCACHED_SOCKET))).c_str ()); + setParams (arg, 0, NULL, kwlist, &keywords, NULL); + if (keywords[0]) // #unix + finet = ! eval_bool (keywords[0], mlenv); + if (keywords[1]) // #inet + finet = eval_bool (keywords[1], mlenv); + if (finet) { + rc = memcached_server_add (obj.mem, memcached_ip, memcached_port); + } else { + rc = memcached_server_add_unix_socket (obj.mem, mlenv->env->path_to_etc (ustring (CharConst (memcached_socket))).c_str ()); + } rc = memcached_behavior_set (obj.mem, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1); mlenv->setMStack (&obj);