my $target = "ml-id.h";
my $targetTmp = "$target-$$";
my $FileList = $ARGV[0];
+my %CClass = ('MLFunc' => 1);
foreach (@ARGV) {
if (/^-/) {
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);
#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
#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);