Skip to content

Commit d24e180

Browse files
Lobotuerkahcorde
authored andcommitted
Updated error returns on rmw_take (#432)
Signed-off-by: lobotuerk <[email protected]>
1 parent f43bed0 commit d24e180

File tree

1 file changed

+45
-31
lines changed

1 file changed

+45
-31
lines changed

rmw_fastrtps_shared_cpp/src/rmw_take.cpp

Lines changed: 45 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ _take(
6060
(void) allocation;
6161
*taken = false;
6262

63-
if (subscription->implementation_identifier != identifier) {
64-
RMW_SET_ERROR_MSG("publisher handle not from this implementation");
65-
return RMW_RET_ERROR;
66-
}
63+
RMW_CHECK_TYPE_IDENTIFIERS_MATCH(
64+
subscription handle,
65+
subscription->implementation_identifier, identifier,
66+
return RMW_RET_INCORRECT_RMW_IMPLEMENTATION)
6767

6868
CustomSubscriberInfo * info = static_cast<CustomSubscriberInfo *>(subscription->data);
6969
RCUTILS_CHECK_FOR_NULL_WITH_MSG(info, "custom subscriber info is null", return RMW_RET_ERROR);
@@ -102,10 +102,10 @@ _take_sequence(
102102
bool taken_flag = false;
103103
rmw_ret_t ret = RMW_RET_OK;
104104

105-
if (subscription->implementation_identifier != identifier) {
106-
RMW_SET_ERROR_MSG("publisher handle not from this implementation");
107-
return RMW_RET_ERROR;
108-
}
105+
RMW_CHECK_TYPE_IDENTIFIERS_MATCH(
106+
subscription handle,
107+
subscription->implementation_identifier, identifier,
108+
return RMW_RET_INCORRECT_RMW_IMPLEMENTATION);
109109

110110
CustomSubscriberInfo * info = static_cast<CustomSubscriberInfo *>(subscription->data);
111111
RCUTILS_CHECK_FOR_NULL_WITH_MSG(info, "custom subscriber info is null", return RMW_RET_ERROR);
@@ -175,11 +175,14 @@ __rmw_take(
175175
bool * taken,
176176
rmw_subscription_allocation_t * allocation)
177177
{
178-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(
179-
subscription, "subscription pointer is null", return RMW_RET_ERROR);
180-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(
181-
ros_message, "ros_message pointer is null", return RMW_RET_ERROR);
182-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(taken, "boolean flag for taken is null", return RMW_RET_ERROR);
178+
RMW_CHECK_ARGUMENT_FOR_NULL(
179+
subscription, RMW_RET_INVALID_ARGUMENT);
180+
181+
RMW_CHECK_ARGUMENT_FOR_NULL(
182+
ros_message, RMW_RET_INVALID_ARGUMENT);
183+
184+
RMW_CHECK_ARGUMENT_FOR_NULL(
185+
taken, RMW_RET_INVALID_ARGUMENT);
183186

184187
return _take(identifier, subscription, ros_message, taken, nullptr, allocation);
185188
}
@@ -194,24 +197,31 @@ __rmw_take_sequence(
194197
size_t * taken,
195198
rmw_subscription_allocation_t * allocation)
196199
{
197-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(
198-
subscription, "subscription pointer is null", return RMW_RET_INVALID_ARGUMENT);
199-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(
200-
message_sequence, "message_sequence pointer is null", return RMW_RET_INVALID_ARGUMENT);
201-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(
202-
message_info_sequence, "message_info_sequence pointer is null",
203-
return RMW_RET_INVALID_ARGUMENT);
204-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(
205-
taken, "size_t flag for count is null", return RMW_RET_INVALID_ARGUMENT);
200+
RMW_CHECK_ARGUMENT_FOR_NULL(
201+
subscription, RMW_RET_INVALID_ARGUMENT);
202+
203+
RMW_CHECK_ARGUMENT_FOR_NULL(
204+
message_sequence, RMW_RET_INVALID_ARGUMENT);
205+
206+
RMW_CHECK_ARGUMENT_FOR_NULL(
207+
message_info_sequence, RMW_RET_INVALID_ARGUMENT);
208+
209+
RMW_CHECK_ARGUMENT_FOR_NULL(
210+
taken, RMW_RET_INVALID_ARGUMENT);
211+
212+
if (0u == count) {
213+
RMW_SET_ERROR_MSG("count cannot be 0");
214+
return RMW_RET_INVALID_ARGUMENT;
215+
}
206216

207217
if (count > message_sequence->capacity) {
208218
RMW_SET_ERROR_MSG("Insufficient capacity in message_sequence");
209-
return RMW_RET_ERROR;
219+
return RMW_RET_INVALID_ARGUMENT;
210220
}
211221

212222
if (count > message_info_sequence->capacity) {
213223
RMW_SET_ERROR_MSG("Insufficient capacity in message_info_sequence");
214-
return RMW_RET_ERROR;
224+
return RMW_RET_INVALID_ARGUMENT;
215225
}
216226

217227
return _take_sequence(
@@ -228,13 +238,17 @@ __rmw_take_with_info(
228238
rmw_message_info_t * message_info,
229239
rmw_subscription_allocation_t * allocation)
230240
{
231-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(
232-
subscription, "subscription pointer is null", return RMW_RET_ERROR);
233-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(
234-
ros_message, "ros_message pointer is null", return RMW_RET_ERROR);
235-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(taken, "boolean flag for taken is null", return RMW_RET_ERROR);
236-
RCUTILS_CHECK_FOR_NULL_WITH_MSG(
237-
message_info, "message info pointer is null", return RMW_RET_ERROR);
241+
RMW_CHECK_ARGUMENT_FOR_NULL(
242+
message_info, RMW_RET_INVALID_ARGUMENT);
243+
244+
RMW_CHECK_ARGUMENT_FOR_NULL(
245+
taken, RMW_RET_INVALID_ARGUMENT);
246+
247+
RMW_CHECK_ARGUMENT_FOR_NULL(
248+
ros_message, RMW_RET_INVALID_ARGUMENT);
249+
250+
RMW_CHECK_ARGUMENT_FOR_NULL(
251+
subscription, RMW_RET_INVALID_ARGUMENT);
238252

239253
return _take(identifier, subscription, ros_message, taken, message_info, allocation);
240254
}

0 commit comments

Comments
 (0)