Exemple #1
0
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));
  }
}
Exemple #2
0
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;
}