Пример #1
0
void CubeSession::OnPackage(Package *&pack)
{
	if (!pack || pack->Header.DataLength == 0) return;
	pack->Data[pack->Header.DataLength - 1] = '\0';
	log_debug("on package (fd = %u): %s", static_cast<unsigned int>(fd), pack->Data);

	Document doc;
	doc.Parse(pack->Data);
	//  {"command": "cmd...", arg1: argv1, arg2: argv2, ...}
	do
	{
		if (!doc.IsObject())
		{
			SendError(SESSIONERROR_PROTOCOL_MISMATCH);
			break;
		}

		if (checkObj(doc, 1, "command", "str"))
		{
			handleCommand(doc);
		}
		else
		{
			SendError(SESSIONERROR_PROTOCOL_MISMATCH);
			break;
		}
	} while (false);

	delete pack;
	pack = NULL;
}
Пример #2
0
jobject CCLuaJavaBridge::checkArrayList(lua_State *L)
{
    vector<string> strings;
    lua_pushnil(L);  /* first key */
    while (lua_next(L, -2)) {
        int index = lua_tonumber(L, -2) - 1;
        string temp = checkObj(L);
        LOGD("%s", temp.c_str());
        strings.push_back(checkObj(L));
        lua_pop(L, 1);
    }

    PSJNIHelper::createArrayList();
    for(vector<string>::iterator it = strings.begin(); it != strings.end(); ++it)
    {
        PSJNIHelper::pushArrayListElement(*it);
    }
    
    return PSJNIHelper::getArrayList();
}
jobject LuaJavaBridge::checkArrayList(lua_State *L)
{
    vector<string> strings;
    lua_pushnil(L);  /* first key */
    while (lua_next(L, -2)) {
        int index = lua_tonumber(L, -2) - 1;
        string temp = checkObj(L);
        LOGD("%s", temp.c_str());
        strings.push_back(checkObj(L));
        lua_pop(L, 1);
    }
    
    JNIEnv *env = 0;
    JavaVM* jvm = cocos2d::JniHelper::getJavaVM();
    jint ret = jvm->GetEnv((void**)&env, JNI_VERSION_1_4);
    switch (ret) {
        case JNI_OK:
            break;
            
        case JNI_EDETACHED :
            if (jvm->AttachCurrentThread(&env, NULL) < 0)
            {
                LOGD("Failed to get the environment using AttachCurrentThread()");
                return NULL;
            }
            break;
            
        case JNI_EVERSION :
        default :
            LOGD("Failed to get the environment using GetEnv()");
            return NULL;
    }
    
    PSJNIHelper::createArrayList();
    for(vector<string>::iterator it = strings.begin(); it != strings.end(); ++it)
    {
        PSJNIHelper::pushArrayListElement(*it);
    }
    
    return PSJNIHelper::getArrayList();
}
Пример #4
0
jobject CCLuaJavaBridge::checkHashMap(lua_State *L)
{
    map<string, string> stdMap;
    lua_pushnil(L);
    while (lua_next(L, -2))
    {
        string key = lua_tostring(L, -2);
        LOGD("key-%s", key.c_str());
        stdMap[key] = checkObj(L);
        lua_pop(L, 1);
    }

    PSJNIHelper::createHashMap();
    for(map<string, string>::iterator it = stdMap.begin(); it != stdMap.end(); ++it)
    {
        PSJNIHelper::pushHashMapElement(it->first, it->second);
    }
    
    return PSJNIHelper::getHashMap();
}
jobject LuaJavaBridge::checkHashMap(lua_State *L)
{
    map<string, string> stdMap;
    lua_pushnil(L);
    while (lua_next(L, -2))
    {
        string key = lua_tostring(L, -2);
        LOGD("key-%s", key.c_str());
        stdMap[key] = checkObj(L);
        lua_pop(L, 1);
    }
    
    JNIEnv *env = 0;
    JavaVM* jvm = cocos2d::JniHelper::getJavaVM();
    jint ret = jvm->GetEnv((void**)&env, JNI_VERSION_1_4);
    switch (ret) {
        case JNI_OK:
            break;
            
        case JNI_EDETACHED :
            if (jvm->AttachCurrentThread(&env, NULL) < 0)
            {
                LOGD("Failed to get the environment using AttachCurrentThread()");
                return NULL;
            }
            break;
            
        case JNI_EVERSION :
        default :
            LOGD("Failed to get the environment using GetEnv()");
            return NULL;
    }

    PSJNIHelper::createHashMap();
    for(map<string, string>::iterator it = stdMap.begin(); it != stdMap.end(); ++it)
    {
        PSJNIHelper::pushHashMapElement(it->first, it->second);
    }
    
    return PSJNIHelper::getHashMap();
}