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; }
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(); }
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(); }