@@ -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