OSDN Git Service

update memcached function.
authorvisor <visor@users.sourceforge.jp>
Tue, 7 Feb 2012 15:03:12 +0000 (00:03 +0900)
committervisor <visor@users.sourceforge.jp>
Tue, 7 Feb 2012 15:03:12 +0000 (00:03 +0900)
bin/MKID.pl
config.h
ext/ml-memcached.cc

index c552295..e5697b5 100755 (executable)
@@ -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 (<IN>) {
        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);
index a8a9722..b8364dc 100644 (file)
--- 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
index 6933ebf..0e93bb5 100644 (file)
@@ -1,5 +1,6 @@
 #include "ml-memcached.h"
 #include "motorconst.h"
+#include "config.h"
 #include "ml.h"
 #include "mlenv.h"
 #include "motorenv.h"
 #include <vector>
 #include <exception>
 
-#define MEMCACHED_LOCALHOST    "127.0.0.1"
-#define MEMCACHED_PORT         MEMCACHED_DEFAULT_PORT
-#define MEMCACHED_SOCKET       "memcached/cache.sock"
-
 /*DOC:
 ==memcached module==
 
 
 /*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<MNode*>  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);