예제 #1
0
/**
 * set proxy.global.backends.addslave
 *
 * add slave server into mysql backends
 *
 * @return nil or the backend
 */
static int proxy_backends_set(lua_State *L) {
	network_backends_t *bs = *(network_backends_t **)luaL_checkself(L);
	gsize keysize = 0;
	const char *key = luaL_checklstring(L, 2, &keysize);

	if (strleq(key, keysize, C("addslave"))) {
        	network_backends_add(bs, g_strdup(lua_tostring(L, -1)), BACKEND_TYPE_RO);
	} else if (strleq(key, keysize, C("addmaster"))) {
        	network_backends_add(bs, g_strdup(lua_tostring(L, -1)), BACKEND_TYPE_RW);
	} else if (strleq(key, keysize, C("removebackend"))) {
        	network_backends_remove(bs, lua_tointeger(L, -1));
	} else {
		return luaL_error(L, "proxy.global.backends.%s is not writable", key);
	}
	return 1;
}
예제 #2
0
static int proxy_backends_set(lua_State *L) {
	network_backends_t *bs = *(network_backends_t **)luaL_checkself(L);
	gsize keysize = 0;
	const char *key = luaL_checklstring(L, 2, &keysize);

	if (strleq(key, keysize, C("addslave"))) {
        	network_backends_add(bs, g_strdup(lua_tostring(L, -1)), BACKEND_TYPE_RO);
	} else if (strleq(key, keysize, C("addmaster"))) {
        	network_backends_add(bs, g_strdup(lua_tostring(L, -1)), BACKEND_TYPE_RW);
       } else if (strleq(key, keysize, C("changemaster"))) {
              //change_standby_to_master(bs);
              GThread* t = g_thread_new("change_master_thread", change_master_thread_func, srv);
//              g_thread_join(t);
	} else if (strleq(key, keysize, C("addstandby"))) {
        	network_backends_add(bs, g_strdup(lua_tostring(L, -1)), BACKEND_TYPE_SY);
	} else if (strleq(key, keysize, C("removebackend"))) {
        	network_backends_remove(bs, lua_tointeger(L, -1));
	} else if (strleq(key, keysize, C("addpwds"))) {
              gchar* pwds = g_strdup(lua_tostring(L, -1));
        	network_backends_add_pwds(srv, pwds);
              g_free(pwds);
	} else if (strleq(key, keysize, C("addenpwds"))) {
                gchar* enpwds = convert_pwds(lua_tostring(L, -1));
                network_backends_add_pwds(srv, enpwds);
                g_free(enpwds);
	} else if (strleq(key, keysize, C("removepwds"))) {
              gchar* users = g_strdup(lua_tostring(L, -1));
        	network_backends_remove_pwds(srv, users);
              g_free(users);
	} else if (strleq(key, keysize, C("saveconfig"))) {
                network_save_config(srv);
       } else {
		return luaL_error(L, "proxy.global.backends.%s is not writable", key);
	}
	return 1;
}