Skip to content

Commit

Permalink
Update service/client request/response API error returns (#249)
Browse files Browse the repository at this point in the history
Signed-off-by: lobotuerk <jtlorente@ekumenlabs.com>
  • Loading branch information
Lobotuerk authored and ahcorde committed Oct 15, 2020
1 parent a197914 commit fb175f7
Showing 1 changed file with 28 additions and 15 deletions.
43 changes: 28 additions & 15 deletions rmw_cyclonedds_cpp/src/rmw_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3457,9 +3457,9 @@ static rmw_ret_t rmw_take_response_request(
void * ros_data, bool * taken, dds_time_t * source_timestamp,
dds_instance_handle_t srcfilter)
{
RET_NULL(taken);
RET_NULL(ros_data);
RET_NULL(request_header);
RMW_CHECK_ARGUMENT_FOR_NULL(taken, RMW_RET_INVALID_ARGUMENT);
RMW_CHECK_ARGUMENT_FOR_NULL(ros_data, RMW_RET_INVALID_ARGUMENT);
RMW_CHECK_ARGUMENT_FOR_NULL(request_header, RMW_RET_INVALID_ARGUMENT);
cdds_request_wrapper_t wrap;
dds_sample_info_t info;
wrap.data = ros_data;
Expand Down Expand Up @@ -3498,8 +3498,11 @@ extern "C" rmw_ret_t rmw_take_response(
rmw_service_info_t * request_header, void * ros_response,
bool * taken)
{
RET_NULL(client);
RET_WRONG_IMPLID(client);
RMW_CHECK_ARGUMENT_FOR_NULL(client, RMW_RET_INVALID_ARGUMENT);
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);
dds_time_t source_timestamp;
rmw_ret_t ret = rmw_take_response_request(
Expand Down Expand Up @@ -3546,8 +3549,11 @@ extern "C" rmw_ret_t rmw_take_request(
rmw_service_info_t * request_header, void * ros_request,
bool * taken)
{
RET_NULL(service);
RET_WRONG_IMPLID(service);
RMW_CHECK_ARGUMENT_FOR_NULL(service, RMW_RET_INVALID_ARGUMENT);
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);
return rmw_take_response_request(
&info->service, request_header, ros_request, taken, nullptr,
Expand Down Expand Up @@ -3621,10 +3627,13 @@ extern "C" rmw_ret_t rmw_send_response(
const rmw_service_t * service,
rmw_request_id_t * request_header, void * ros_response)
{
RET_NULL(service);
RET_WRONG_IMPLID(service);
RET_NULL(request_header);
RET_NULL(ros_response);
RMW_CHECK_ARGUMENT_FOR_NULL(service, RMW_RET_INVALID_ARGUMENT);
RMW_CHECK_TYPE_IDENTIFIERS_MATCH(
service,
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);
cdds_request_header_t header;
dds_instance_handle_t reqwrih;
Expand Down Expand Up @@ -3671,10 +3680,14 @@ extern "C" rmw_ret_t rmw_send_request(
int64_t * sequence_id)
{
static std::atomic_uint next_request_id;
RET_NULL(client);
RET_WRONG_IMPLID(client);
RET_NULL(ros_request);
RET_NULL(sequence_id);
RMW_CHECK_ARGUMENT_FOR_NULL(client, RMW_RET_INVALID_ARGUMENT);
RMW_CHECK_TYPE_IDENTIFIERS_MATCH(
client,
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);
cdds_request_header_t header;
header.guid = info->client.pub->pubiid;
Expand Down

0 comments on commit fb175f7

Please sign in to comment.