void CCPomelo::dispatchRequest(){ lockReponsQeueue(); CCPomeloReponse_ *response = popReponse(); if (response) { CCPomeloContent_ * content = NULL; if (request_content.find(response->request)!=request_content.end()) { content = request_content[response->request]; request_content.erase(response->request); } if (content) { CCObject *pTarget = content->pTarget; SEL_CallFuncND pSelector = content->pSelector; if (pTarget && pSelector) { CCPomeloReponse resp; resp.status = response->status; resp.docs = response->docs; (pTarget->*pSelector)((CCNode *)this,&resp); } }else{ CCLOG("dispatch response:\r\nlost content"); } json_decref(response->docs); json_decref(response->request->msg); pc_request_destroy(response->request); delete response; } unlockReponsQeueue(); }
void CCPomelo::dispatchRequest(){ lockReponsQeueue(); CCPomeloReponse_ *response = popReponse(); if (response) { CCPomeloContent_ * content = NULL; if (request_content.find(response->request)!=request_content.end()) { content = request_content[response->request]; request_content.erase(response->request); } if (content) { if (log_level>0) CCLog("dispatch response:\r\nevent:%s\r\nmsg:%s\r\nstatus:%d\r\ndocs:%s\r\n",response->request->route,json_dumps(response->request->msg,0),response->status,json_dumps(response->docs,0)); CCObject *pTarget = content->pTarget; SEL_CallFuncND pSelector = content->pSelector; int luaHandler = content->pLuaHandler; if (pTarget && pSelector) { CCPomeloReponse resp; resp.status = response->status; resp.docs = response->docs; resp.luaHandler = luaHandler; (pTarget->*pSelector)((CCNode *)this, &resp); } }else{ CCLog("dispatch response:\r\nlost content"); } json_decref(response->docs); json_decref(response->request->msg); pc_request_destroy(response->request); delete response; } unlockReponsQeueue(); }
void Login::requstConnectorCallback(pc_request_t *req, int status, json_t *resp) { error = 0; if(status == -1) { CCLOG("Fail to send request to server.\n"); } else if(status == 0) { char *json_str = json_dumps(resp, 0); CCLOG("server response: %s \n", json_str); json_t* users = json_object_get(resp,"users"); if(json_object_get(resp, "error") != NULL) { error = 1; CCLOG("connect error %s", json_str); free(json_str); return; } pomelo_client = req->client; for (unsigned int i=0; i<json_array_size(users); i++) { json_t* val = json_array_get(users,i); userQueue->addObject(CCString::create(json_string_value(val))); } } // release relative resource with pc_request_t json_t *msg = req->msg; // pc_client_t *client = req->client; json_decref(msg); pc_request_destroy(req); }
void on_request_gate_cb(pc_request_t *req, int status, json_t *resp) { if (status == -1) { printf("Fail to send request to server.\n"); } else if (status == 0) { connectorHost = json_string_value(json_object_get(resp, "host")); connectorPort = json_number_value(json_object_get(resp, "port")); pc_client_t *client = pc_client_new(); struct sockaddr_in address; memset(&address, 0, sizeof(struct sockaddr_in)); address.sin_family = AF_INET; address.sin_port = htons(connectorPort); address.sin_addr.s_addr = inet_addr(connectorHost); // add pomelo events listener pc_add_listener(client, "disconnect", on_disconnect); pc_add_listener(client, "onChat", on_chat); pc_add_listener(client, "onAdd", on_add); pc_add_listener(client, "onLeave", on_leave); printf("try to connect to connector server %s %d\n", connectorHost, connectorPort); // try to connect to server. if (pc_client_connect(client, &address)) { printf("fail to connect connector server.\n"); pc_client_destroy(client); return ; } const char *route = "connector.entryHandler.enter"; json_t *msg = json_object(); json_t *str = json_string(user); json_t *channel_str = json_string(channel); json_object_set_new(msg, "username", str); json_object_set_new(msg, "rid", channel_str); pc_request_t *request = pc_request_new(); printf("%s %s\n", user, channel); pc_request(client, request, route, msg, on_request_connector_cb); } // release relative resource with pc_request_t json_t *pc_msg = req->msg; pc_client_t *pc_client = req->client; json_decref(pc_msg); pc_request_destroy(req); pc_client_stop(pc_client); }
// request callback void on_request_cb(pc_request_t *req, int status, json_t *resp) { if(status == -1) { printf("Fail to send request to server.\n"); } else if(status == 0) { printf("server response: %s\n", json_dumps(resp, 0)); } // release relative resource with pc_request_t json_t *msg = req->msg; json_decref(msg); pc_request_destroy(req); count--; if(count == 0) pc_client_stop(req->client); }
void Net::pomeloRequestCallBack(pc_request_t *req, int status, json_t *resp) { auto event = req->route; if(status == -1) { Net::getInstance()->pushMsg(std::string(event), std::string("{\"error\":true}")); Net::getInstance()->pushMsg(std::string(PC_EVENT_REQUESTFAIL), std::string("")); } else if(status == 0) { auto msg = json_dumps(resp, 0); Net::getInstance()->pushMsg(std::string(event), std::string(msg)); free(msg); } json_t *msg = req->msg; json_decref(msg); pc_request_destroy(req); }
void on_request_cb(pc_request_t* req, int status, json_t* resp) { if (status == -1) { printf("Fail to request to server.\n"); } else if (status == 0) { char * json_str = json_dumps(resp, 0); if (json_str != NULL) { printf("server response:%s\n", json_str); free(json_str); } } json_t *msg = req->msg; pc_client_t *client = req->client; json_decref(msg); pc_request_destroy(req); pc_client_stop(client); }
void NetImpl::on_request_cb( pc_request_t* __req, int __status, json_t* __resp ) { if(__status == -1) { printf("Fail to send request to server.\n"); } else if(__status == 0) { char* __json_str = json_dumps(__resp, 0); if(__json_str != NULL) { printf("server response: %s\n", __json_str); free(__json_str); } } // release relative resource with pc_request_t json_t*__msg = __req->msg; pc_client_t* __client = __req->client; json_decref(__msg); pc_request_destroy(__req); // stop client pc_client_stop(__client); }
void on_request_connector_cb(pc_request_t *req, int status, json_t *resp) { printf("on_request_connector_cb\n"); if (status == -1) { printf("Fail to send request to server.\n"); } else if (status == 0) { char *json_str = json_dumps(resp, 0); printf("server response: %s \n", json_str); json_t *users = json_object_get(resp, "users"); if (json_object_get(resp, "error") != NULL) { printf("connect error %s", json_str); free(json_str); return; } pomelo_client = req->client; printf("login chat ok\n"); } // release relative resource with pc_request_t json_t *msg = req->msg; pc_client_t *client = req->client; json_decref(msg); pc_request_destroy(req); }
void CCPomelo::dispatchRequest() { lockReponsQeueue(); CCPomeloReponse_ *response = popReponse(); if (response) { std::map<pc_request_t*, std::function<void(Node*, void*)> >::iterator it = request_content.find(response->request); if (it != request_content.end()) { CCPomeloReponse resp; resp.status = response->status; resp.docs = response->docs; (*it).second((Node*)this, &resp); request_content.erase(it); } json_decref(response->docs); json_decref(response->request->msg); pc_request_destroy(response->request); delete response; } unlockReponsQeueue(); }
void Login::requstGateCallback(pc_request_t *req, int status, json_t *resp) { if(status == -1) { CCLOG("Fail to send request to server.\n"); } else if(status == 0) { connectorHost = json_string_value(json_object_get(resp, "host")); connectorPort = json_number_value(json_object_get(resp, "port")); CCLOG("%s %d", connectorHost,connectorPort); pc_client_t *client = pc_client_new(); struct sockaddr_in address; memset(&address, 0, sizeof(struct sockaddr_in)); address.sin_family = AF_INET; address.sin_port = htons(connectorPort); address.sin_addr.s_addr = inet_addr(connectorHost); // add pomelo events listener void (*on_disconnect)(pc_client_t *client, const char *event, void *data) = &Login::onDisconnectCallback; void (*on_chat)(pc_client_t *client, const char *event, void *data) = &Login::onChatCallback; void (*on_add)(pc_client_t *client, const char *event, void *data) = &Login::onAddCallback; void (*on_leave)(pc_client_t *client, const char *event, void *data) = &Login::onLeaveCallback; pc_add_listener(client, "disconnect", on_disconnect); pc_add_listener(client, "onChat", on_chat); pc_add_listener(client, "onAdd", on_add); pc_add_listener(client, "onLeave", on_leave); // try to connect to server. if(pc_client_connect(client, &address)) { CCLOG("fail to connect server.\n"); pc_client_destroy(client); return ; } const char *route = "connector.entryHandler.enter"; json_t *msg = json_object(); json_t *str = json_string(username.c_str()); json_t *channel_str = json_string(channel.c_str()); json_object_set(msg, "username", str); json_object_set(msg, "rid", channel_str); // decref for json object json_decref(str); json_decref(channel_str); pc_request_t *request = pc_request_new(); void (*connect_cb)(pc_request_t *req, int status, json_t *resp )= &Login::requstConnectorCallback; pc_request(client, request, route, msg, connect_cb); /* char *json_str = json_dumps(resp, 0); if(json_str != NULL) { CCLOG("server response: %s %d\n", connectorHost, connectorPort); free(json_str); } */ } // release relative resource with pc_request_t json_t *pc_msg = req->msg; pc_client_t *pc_client = req->client; json_decref(pc_msg); pc_request_destroy(req); pc_client_stop(pc_client); }