void RoundMsgPushThread(RoundThread* thread) { RoundMessageManager* mgr = (RoundMessageManager*)round_thread_getuserdata(thread); char data[32]; for (int n = 0; n < ROUND_MSGMRG_TEST_COUNT; n++) { round_sleep(100); snprintf(data, sizeof(data), "msg%d", n); RoundMessage* msg = round_message_new(); round_message_setstring(msg, data); BOOST_CHECK(round_message_manager_pushmessage(mgr, msg)); } }
bool round_local_node_postrequest(RoundLocalNode* node, RoundMessage* msg, RoundJSONObject** resultObj, RoundError* err) { if (!msg) { round_node_rpcerrorcode2error(node, ROUND_RPC_ERROR_CODE_INVALID_PARAMS, err); return false; } if (!node) { round_message_delete(msg); round_node_rpcerrorcode2error(node, ROUND_RPC_ERROR_CODE_INTERNAL_ERROR, err); return false; } if (!resultObj || !err) { round_message_delete(msg); round_node_rpcerrorcode2error(node, ROUND_RPC_ERROR_CODE_INVALID_PARAMS, err); return false; } if (!round_message_setnotifyenabled(msg, true)) { round_message_delete(msg); round_node_rpcerrorcode2error(node, ROUND_RPC_ERROR_CODE_INTERNAL_ERROR, err); return false; } round_local_node_message_seterror(msg, err); round_local_node_message_setresponsejsonobject(msg, resultObj); if (!round_message_manager_pushmessage(node->msgMgr, msg)) { round_message_delete(msg); round_node_rpcerrorcode2error(node, ROUND_RPC_ERROR_CODE_INTERNAL_ERROR, err); return false; } if (!round_message_timedwaitnotify(msg, round_local_node_getrequesttimeout(node))) { round_message_setnotifyenabled(msg, false); round_node_rpcerrorcode2error(node, ROUND_RPC_ERROR_CODE_INTERNAL_ERROR, err); return false; } return true; }