예제 #1
0
//## method void Class.setJITCode();
static METHOD Class_setJITCode(Ctx *ctx, knh_sfp_t *sfp, long rix)
{
    knh_Class_t *o = (knh_Class_t*) sfp[0].o;
    knh_Method_t *mtd = knh_lookupMethod(ctx, o->cid, FN_new);
    pjit_compile(ctx, mtd);
    RETURNvoid_();
}
예제 #2
0
// LogPool LogPool.loadFile(String key, String file);
static KMETHOD LogPool_loadFile(KonohaContext *kctx, KonohaStack *sfp)
{
	logpool_t *lp = (logpool_t *) ((kRawPtr *) sfp[0].asObject)->rawptr;
	kString *key  = sfp[1].asString;
	kString *file = sfp[2].s;
	memcached_st *mc = memcached_create(NULL);
	memcached_server_list_st servers;
	memcached_return_t rc;
	servers = memcached_server_list_append(NULL, "127.0.0.1", 11211, &rc);
	if (rc != MEMCACHED_SUCCESS) {
		fprintf(stderr, "memcached_server_list_append failed\n");
		RETURNvoid_();
	}

	rc = memcached_server_push(mc, servers);
	memcached_server_list_free(servers);

	size_t len;
	char *script = loadFile(S_text(file), &len);
	memcached_set(mc, S_text(key), S_size(key), script, len, 0, 0);
	logpool_procedure(lp, (char*)S_text(key), S_size(key));
	free(script);
	RETURNvoid_();
}
예제 #3
0
파일: actor.cpp 프로젝트: doly/femtoutil
static void knh_Actor_addMemcached(CTX ctx, knh_Actor_t *a)
{
	const char *actor_name = DP(a)->actor_name;
	knh_String_t *p = ctx->script->ns->path->urn;
	const char *path = p->str.text;
	memcached_st *memc = new_memcached("localhost");
	int port = knh_Actor_getPortNum(memc);
	port++;
	char port_str[5] = {0};
	snprintf(port_str, 5, "%d", port);
	memcached_setValue(memc, "port", port_str);
	char buf[MAX_BUF_SIZE] = {0};
	if (sizeof(path) + 6 > MAX_BUF_SIZE) {
		fprintf(stderr, "ERROR: too long name\n");
	}
	snprintf(buf, MAX_BUF_SIZE, "%s:%s", path, port_str);
	memcached_setValue(memc, actor_name, buf);
	DP(a)->port = port;
	DP(a)->path = path;
	RETURNvoid_();
}
예제 #4
0
//## method void Func.setJITCode();
static METHOD Func_setJITCode(Ctx *ctx, knh_sfp_t *sfp, long rix)
{
    knh_Func_t *o = (knh_Func_t*) sfp[0].o;
    pjit_compile(ctx, o->mtd);
    RETURNvoid_();
}