Update service/client request/response API error returns (#249)

Signed-off-by: lobotuerk <jtlorente@ekumenlabs.com>
This commit is contained in:
Jose Tomas Lorente 2020-09-28 21:50:04 -03:00 committed by Alejandro Hernández Cordero
parent a197914d31
commit fb175f74db

View file

@ -3457,9 +3457,9 @@ static rmw_ret_t rmw_take_response_request(
void * ros_data, bool * taken, dds_time_t * source_timestamp, void * ros_data, bool * taken, dds_time_t * source_timestamp,
dds_instance_handle_t srcfilter) dds_instance_handle_t srcfilter)
{ {
RET_NULL(taken); RMW_CHECK_ARGUMENT_FOR_NULL(taken, RMW_RET_INVALID_ARGUMENT);
RET_NULL(ros_data); RMW_CHECK_ARGUMENT_FOR_NULL(ros_data, RMW_RET_INVALID_ARGUMENT);
RET_NULL(request_header); RMW_CHECK_ARGUMENT_FOR_NULL(request_header, RMW_RET_INVALID_ARGUMENT);
cdds_request_wrapper_t wrap; cdds_request_wrapper_t wrap;
dds_sample_info_t info; dds_sample_info_t info;
wrap.data = ros_data; wrap.data = ros_data;
@ -3498,8 +3498,11 @@ extern "C" rmw_ret_t rmw_take_response(
rmw_service_info_t * request_header, void * ros_response, rmw_service_info_t * request_header, void * ros_response,
bool * taken) bool * taken)
{ {
RET_NULL(client); RMW_CHECK_ARGUMENT_FOR_NULL(client, RMW_RET_INVALID_ARGUMENT);
RET_WRONG_IMPLID(client); RMW_CHECK_TYPE_IDENTIFIERS_MATCH(
client,
client->implementation_identifier, eclipse_cyclonedds_identifier,
return RMW_RET_INCORRECT_RMW_IMPLEMENTATION);
auto info = static_cast<CddsClient *>(client->data); auto info = static_cast<CddsClient *>(client->data);
dds_time_t source_timestamp; dds_time_t source_timestamp;
rmw_ret_t ret = rmw_take_response_request( rmw_ret_t ret = rmw_take_response_request(
@ -3546,8 +3549,11 @@ extern "C" rmw_ret_t rmw_take_request(
rmw_service_info_t * request_header, void * ros_request, rmw_service_info_t * request_header, void * ros_request,
bool * taken) bool * taken)
{ {
RET_NULL(service); RMW_CHECK_ARGUMENT_FOR_NULL(service, RMW_RET_INVALID_ARGUMENT);
RET_WRONG_IMPLID(service); RMW_CHECK_TYPE_IDENTIFIERS_MATCH(
service,
service->implementation_identifier, eclipse_cyclonedds_identifier,
return RMW_RET_INCORRECT_RMW_IMPLEMENTATION);
auto info = static_cast<CddsService *>(service->data); auto info = static_cast<CddsService *>(service->data);
return rmw_take_response_request( return rmw_take_response_request(
&info->service, request_header, ros_request, taken, nullptr, &info->service, request_header, ros_request, taken, nullptr,
@ -3621,10 +3627,13 @@ extern "C" rmw_ret_t rmw_send_response(
const rmw_service_t * service, const rmw_service_t * service,
rmw_request_id_t * request_header, void * ros_response) rmw_request_id_t * request_header, void * ros_response)
{ {
RET_NULL(service); RMW_CHECK_ARGUMENT_FOR_NULL(service, RMW_RET_INVALID_ARGUMENT);
RET_WRONG_IMPLID(service); RMW_CHECK_TYPE_IDENTIFIERS_MATCH(
RET_NULL(request_header); service,
RET_NULL(ros_response); service->implementation_identifier, eclipse_cyclonedds_identifier,
return RMW_RET_INCORRECT_RMW_IMPLEMENTATION);
RMW_CHECK_ARGUMENT_FOR_NULL(request_header, RMW_RET_INVALID_ARGUMENT);
RMW_CHECK_ARGUMENT_FOR_NULL(ros_response, RMW_RET_INVALID_ARGUMENT);
CddsService * info = static_cast<CddsService *>(service->data); CddsService * info = static_cast<CddsService *>(service->data);
cdds_request_header_t header; cdds_request_header_t header;
dds_instance_handle_t reqwrih; dds_instance_handle_t reqwrih;
@ -3671,10 +3680,14 @@ extern "C" rmw_ret_t rmw_send_request(
int64_t * sequence_id) int64_t * sequence_id)
{ {
static std::atomic_uint next_request_id; static std::atomic_uint next_request_id;
RET_NULL(client); RMW_CHECK_ARGUMENT_FOR_NULL(client, RMW_RET_INVALID_ARGUMENT);
RET_WRONG_IMPLID(client); RMW_CHECK_TYPE_IDENTIFIERS_MATCH(
RET_NULL(ros_request); client,
RET_NULL(sequence_id); client->implementation_identifier, eclipse_cyclonedds_identifier,
return RMW_RET_INCORRECT_RMW_IMPLEMENTATION);
RMW_CHECK_ARGUMENT_FOR_NULL(ros_request, RMW_RET_INVALID_ARGUMENT);
RMW_CHECK_ARGUMENT_FOR_NULL(sequence_id, RMW_RET_INVALID_ARGUMENT);
auto info = static_cast<CddsClient *>(client->data); auto info = static_cast<CddsClient *>(client->data);
cdds_request_header_t header; cdds_request_header_t header;
header.guid = info->client.pub->pubiid; header.guid = info->client.pub->pubiid;