Skip to content
Snippets Groups Projects
Verified Commit f9bc8ceb authored by Alberto Miranda's avatar Alberto Miranda :hotsprings:
Browse files

Redefine RPC types for ADM_transfer_dataset

parent ce832455
No related branches found
No related tags found
1 merge request!30Resolve "Refactor library RPC implementation of `admire::transfer_dataset`"
......@@ -76,7 +76,7 @@ MERCURY_GEN_STRUCT_PROC(
hg_return_t
hg_proc_ADM_job_t(hg_proc_t proc, void* data);
struct adm_qos_entity {
typedef struct adm_qos_entity {
ADM_qos_scope_t e_scope;
union {
ADM_node_t e_node;
......@@ -84,17 +84,27 @@ struct adm_qos_entity {
ADM_dataset_t e_dataset;
ADM_transfer_t e_transfer;
};
};
} adm_qos_entity;
// TODO: encoder/decoder
hg_return_t
hg_proc_ADM_qos_entity_t(hg_proc_t proc, void* data);
typedef struct adm_qos_limit {
ADM_qos_entity_t l_entity;
ADM_qos_class_t l_class;
uint64_t l_value;
hg_uint64_t l_value;
} adm_qos_limit;
// TODO: encoder/decoder
// clang-format off
MERCURY_GEN_STRUCT_PROC(
adm_qos_limit, // NOLINT
((ADM_qos_entity_t) (l_entity))
((ADM_qos_class_t) (l_class))
((hg_uint64_t) (l_value))
)
// clang-format on
typedef struct adm_transfer {
uint64_t t_id;
......@@ -377,17 +387,32 @@ MERCURY_GEN_PROC(ADM_in_transit_ops_in_t, ((hg_const_string_t) (in_transit)))
MERCURY_GEN_PROC(ADM_in_transit_ops_out_t, ((int32_t) (ret)))
struct adm_qos_limit_list {
/** An array of QoS limits */
adm_qos_limit* l_limits;
/** The length of the array */
size_t l_length;
};
hg_return_t
hg_proc_ADM_qos_limit_list_t(hg_proc_t proc, void* data);
/// ADM_transfer_dataset
MERCURY_GEN_PROC(
ADM_transfer_dataset_in_t,
((hg_const_string_t) (source))((hg_const_string_t) (destination))(
(hg_const_string_t) (qos_constraints))(
(hg_const_string_t) (distribution))((int32_t) (job_id)))
ADM_transfer_dataset_in_t,
((ADM_job_t) (job_id))
((ADM_dataset_list_t) (sources))
((ADM_dataset_list_t) (targets))
((ADM_qos_limit_list_t) (qos_limits))
((hg_int32_t) (distribution))
)
MERCURY_GEN_PROC(
ADM_transfer_dataset_out_t,
((int32_t) (ret))
((hg_const_string_t) (transfer_handle)))
MERCURY_GEN_PROC(ADM_transfer_dataset_out_t,
((int32_t) (ret))((hg_const_string_t) (transfer_handle)))
/// ADM_set_dataset_information
......
......@@ -980,28 +980,9 @@ ADM_transfer_dataset(hg_handle_t h) {
ret = margo_get_input(h, &in);
assert(ret == HG_SUCCESS);
out.ret = -1;
out.transfer_handle = "fail";
if(in.source == nullptr) {
LOGGER_ERROR("ADM_transfer_dataset(): invalid source (nullptr)");
} else if(in.destination == nullptr) {
LOGGER_ERROR("ADM_transfer_dataset(): invalid destination (nullptr)");
} else if(in.qos_constraints == nullptr) {
LOGGER_ERROR(
"ADM_transfer_dataset(): invalid qos_constraints (nullptr)");
} else if(in.distribution == nullptr) {
LOGGER_ERROR("ADM_transfer_dataset(): invalid distribution (nullptr)");
} else if(in.job_id < 0) {
LOGGER_ERROR("ADM_transfer_dataset(): invalid job_id (< 0)");
} else {
LOGGER_INFO("ADM_transfer_dataset({},{},{},{},{})", in.source,
in.destination, in.qos_constraints, in.distribution,
in.job_id);
out.ret = 0;
out.transfer_handle = "ok";
}
// TODO
out.ret = 0;
ret = margo_respond(h, &out);
assert(ret == HG_SUCCESS);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment