in dissociated-ipc/ucx_conn.cc [236:259]
arrow::Status Connection::RecvTagData(ucp_tag_message_h msg, void* buffer,
const size_t count, void* user_data,
ucp_tag_recv_nbx_callback_t cb,
const ucs_memory_type_t memory_type) {
ARROW_RETURN_NOT_OK(CheckClosed());
ucp_request_param_t recv_param;
recv_param.op_attr_mask = UCP_OP_ATTR_FLAG_NO_IMM_CMPL | UCP_OP_ATTR_FIELD_DATATYPE |
UCP_OP_ATTR_FIELD_MEMORY_TYPE;
recv_param.datatype = ucp_dt_make_contig(1);
recv_param.memory_type = memory_type;
if (user_data) {
recv_param.user_data = user_data;
recv_param.op_attr_mask |= UCP_OP_ATTR_FIELD_USER_DATA;
}
if (cb) {
recv_param.cb.recv = cb;
recv_param.op_attr_mask |= UCP_OP_ATTR_FIELD_CALLBACK;
}
auto request =
ucp_tag_msg_recv_nbx(ucp_worker_->get(), buffer, count, msg, &recv_param);
return FromUcsStatus("recvtagdata", wait_for_request(request, *ucp_worker_));
}