Commit graph

186 commits

Author SHA1 Message Date
Lobotuerk
c610402b46 Update rmw_publish_serialized_message() error returns (#240)
Signed-off-by: lobotuerk <jtlorente@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Lobotuerk
3160c181f7 Update rmw_publish() error returns (#239)
Signed-off-by: lobotuerk <jtlorente@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
16e27f6504 Ensure compliant matched pub/sub count API. (#223)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
ba077ce061 Change RET_WRONG_IMPLID() to return RMW_RET_INCORRECT_IMPLEMENTATION (#226)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
aa4ee36aff Fix bad conditional in rmw_serialize(). (#217)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
bc2bc9ef1b Ensure compliant subscription API. (#214)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
398812c12d Ensure compliant publisher API (#210)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
3d03bf6c53 Ensure compliant node construction/destruction API. (#206)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
5930ea020c Amend rmw_init() implementation: require enclave. (#204)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
7eff1eab55 Ensure compliant init/shutdown API implementations. (#202)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
f7fcf88bb4 Ensure compliant init options API implementations. (#200)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Michel Hidalgo
cab4b81278 Finalize context iff shutdown. (#196)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-10-15 15:45:20 +02:00
Jacob Perron
5559dfa221 0.7.4 2020-10-07 10:28:11 -07:00
Jacob Perron
6f9a61474f
rmw_destroy_node must remove node from graph cache (#252)
Signed-off-by: Erik Boasson <eb@ilities.com>

Co-authored-by: Erik Boasson <eb@ilities.com>
2020-10-06 09:49:16 -07:00
Jacob Perron
e0bfe46474 0.7.3 2020-07-21 16:47:18 -07:00
Jacob Perron
5333ab6be7
Lost service responses (#183, #74) (#187) (#209)
* Block rmw_send_response if response reader unknown

The client checks using rmw_service_server_is_available whether the
request it sends will be delivered to service, but that does not imply
that the (independent, as far as DDS is concerned) response reader of
the client has been discovered by the service.  Usually that will be the
case, but there is no guarantee.

Ideally DDS would offer an interface that allows checking the reverse
discovery, but that does not yet exist in either the specification or in
Cyclone.  This commit works around that by delaying publishing the
response until the number of request writers matches the number of
response readers.

Signed-off-by: Erik Boasson <eb@ilities.com>

* Change request headers to use rmw_request_id_t on the wire

Signed-off-by: Erik Boasson <eb@ilities.com>

* Precise check for matched client/service

Assign a unique identifier to each client/service on creation, add it
to the USER_DATA QoS of the reader and writer and use it for the request
ids.  This allows:

* rmw_service_server_is_available to only return true once it has
  discovered a reader/writer pair of a single service (rather than a
  reader from some service and a writer from some service); and
* rmw_send_response to block until it has discovered the requesting
  client's response reader and to abandon the operation when the client
  has disappeared.

The USER_DATA is formatted in the same manner as the participant
USER_DATA, this uses the keys "serviceid" and "clientid".

This is still but a workaround for having a mechanism in DDS to ensure
that the response reader has been discovered prior by the request writer
prior to sending the request.

Signed-off-by: Erik Boasson <eb@ilities.com>

* Address review comments

Signed-off-by: Erik Boasson <eb@ilities.com>

* Backwards compatibility

* Revert commit fb040c5db6c05be7698f05969f9bb48b8740f0fe to retain the
  old wire representation;

* Embed the publication_handle of the request inside rmw_request_id_t,
  possible because reverting to the old wire representation frees up
  enough space, and use this in rmw_send_response to check for the
  presence of the client's reader;

* Clients and services without a client/service id in the reader/writer
  user data are treated as fully matched at all times.

* Replace ERROR by FAILURE to because of windows.h

Signed-off-by: Erik Boasson <eb@ilities.com>

* Timeout rmw_send_response after waiting 100ms for discovery

The discovery will eventually result in the client's reader being known
or its writer no longer being known, so a timeout is not necessary for
correctness.  However, if it ever were to block for a longish
time (which is possible in the face of network failures), returning a
timeout to the caller is expected to result in less confusion.

Signed-off-by: Erik Boasson <eb@ilities.com>

* Make iterators "const auto &"

Signed-off-by: Erik Boasson <eb@ilities.com>

* Add TODO for eliminating rmw_send_response blocking

Signed-off-by: Erik Boasson <eb@ilities.com>

Co-authored-by: eboasson <eb@ilities.com>
2020-07-21 16:19:35 -07:00
Jacob Perron
368cac9420 0.7.2 2020-07-07 20:46:10 -07:00
Michel Hidalgo
6598191749
Handle RMW_DEFAULT_DOMAIN_ID. (#194) (#199)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-06-23 12:15:22 -03:00
Jacob Perron
64b0f6750c 0.7.1 2020-06-02 23:44:15 -07:00
eboasson
c424bc118f
Restore dashing/eloquent behaviour of "service_is_available" (#190)
* Delete superfluous/erroneous/misleading comment

Signed-off-by: Erik Boasson <eb@ilities.com>

* Check for matched endpoints in server_is_available

Signed-off-by: Erik Boasson <eb@ilities.com>
2020-06-01 16:27:25 -03:00
Ivan Santiago Paunovic
707470e96d 0.7.0 2020-05-12 21:47:42 +00:00
Ivan Santiago Paunovic
1c0606d1dd Changelog
Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>
2020-05-12 21:46:46 +00:00
Dan Rose
a459d28659
CI: switch setup-ros to master (#181)
Master has build-fixing changes for compatibility with the GitHub Windows runner since ros-tooling/setup-ros#159
2020-05-12 14:30:52 -05:00
Ivan Santiago Paunovic
8fafb3ec0a
Remove MANUAL_BY_NODE liveliness API (#178)
Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>
2020-05-12 14:51:41 -03:00
Dan Rose
b1af6e03f9
Add upstream package to CI (#179)
This ensures we maintain compatibility with upstream
2020-05-08 01:47:28 -05:00
Dan Rose
ac9f141b07
Cache chocolatey packages to reduce flakiness (#180) 2020-05-08 01:37:48 -05:00
Jacob Perron
fee15a96af 0.6.0 2020-05-04 17:21:31 -07:00
Ivan Santiago Paunovic
40ba599462
Fix how topic name should be when not using ros topic name conventions (#177)
Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>

Co-authored-by: Shane Loretz <sloretz@osrfoundation.org>
2020-04-30 18:08:55 -07:00
Ivan Santiago Paunovic
f820994aab
Initialize participant on first use. Destroy participant after last node is destroyed. (#176)
* Initialize participant on first use. Destroy participant after last node is destroyed

Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>

* Please linters

Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>

* Solve problems with guard conditions

Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>

* Address peer review comments

Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>

* Address peer review comments

Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>

* Used DDS_CYCLONEDDS_HANDLE to create all guard conditions

Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>

* Increase ref count always

Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>
2020-04-30 16:16:02 -07:00
Sid Faber
8e14104246
Fix error message (#175)
Only generate "Recompile with '-DENABLESECURITY=ON' error when
ROS_SECURITY_STRATEGY="Enforce"

Signed-off-by: Sid Faber <sid.faber@canonical.com>
2020-04-29 18:38:00 -03:00
Dan Rose
3397c95095
Exclude other RMW from Github CI build (#168)
Since #145, the CI build of rmw_cyclonedds_cpp has been failing on Windows due to inadvertently injecting fastrtps into the build process.
fastrtps fails to build (https://github.com/eProsima/Fast-RTPS/issues/1173) causing the CI to fail.
There doesn't seem to be a better way to suppress this in action-ros-ci https://github.com/ros-tooling/action-ros-ci/issues/177

Fixes #164
2020-04-29 12:17:41 -05:00
Michel Hidalgo
3c306d32a6
Cast size_t to uint32_t explicitly. (#171)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-04-28 14:37:00 -03:00
Michael Carroll
03a49c5153
Rename rosidl_message_bounds_t (#166)
* Rename rosidl_message_bounds_t

Signed-off-by: Michael Carroll <michael@openrobotics.org>
2020-04-24 15:56:16 -05:00
Michael Carroll
224d761eca
Add support for taking a sequence of messages (#148)
* Add support for taking a sequence of messages

Signed-off-by: Michael Carroll <michael@openrobotics.org>

* Reorder valid messages to front of sequence

Signed-off-by: Michael Carroll <michael@openrobotics.org>

* Initialize taken value

Signed-off-by: Michael Carroll <michael@openrobotics.org>
2020-04-24 11:49:15 -05:00
Ingo Lütkebohle
2638f4abe8
implement with_info version of take (#161)
* implement with_info version of take

Signed-off-by: Luetkebohle Ingo (CR/AEX3) <ingo.luetkebohle@de.bosch.com>

* Fix function names and signatures.

Signed-off-by: Luetkebohle Ingo (CR/AEX3) <ingo.luetkebohle@de.bosch.com>

* Return 0 on received for responses as well

Signed-off-by: Luetkebohle Ingo (CR/AEX3) <ingo.luetkebohle@de.bosch.com>
2020-04-23 21:31:48 -07:00
Ingo Lütkebohle
27bc8194e7
Fill in message_info timestamps (#163)
* Fill in message_info timestamps

Signed-off-by: Luetkebohle Ingo (CR/AEX3) <ingo.luetkebohle@de.bosch.com>

* Report error when timestamp cannot be obtained.

Signed-off-by: Luetkebohle Ingo (CR/AEX3) <ingo.luetkebohle@de.bosch.com>

* return 0 for received timestamp to signify lack of support

Signed-off-by: Luetkebohle Ingo (CR/AEX3) <ingo.luetkebohle@de.bosch.com>
2020-04-23 14:29:39 -07:00
Ivan Santiago Paunovic
0fc4a3f289
Fix build warnings (#162)
Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>
2020-04-22 19:40:16 -03:00
eboasson
8a1d3fc092
Switch to one participant per context model (#145)
Signed-off-by: Erik Boasson <eb@ilities.com>
2020-04-22 14:01:05 -03:00
Dan Rose
5616437a4d
Fix serialization on non-32-bit, big-endian systems (#159) 2020-04-17 16:54:06 -05:00
Dan Rose
073d21ab8f
Add debug tips to README.md (#137) 2020-04-16 19:10:29 -05:00
Dan Rose
a1d05fdf56
Bump ci setup-ros to 0.0.19 (#155) 2020-04-14 19:47:17 -05:00
Karsten Knese
f41de1673a
correct fallthrough macro (#154)
* correct fallthrough macro

Signed-off-by: Karsten Knese <karsten@openrobotics.org>
2020-04-14 17:41:11 -05:00
Michel Hidalgo
f6866c5fc1 Register RMW output filters.
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
2020-04-14 16:42:04 +02:00
dodsonmg
21dd7c4570
implement safer align_ function (#141)
avoids unnecessary casts to pointer and pointer manipulation by reference
2020-04-14 00:53:38 -05:00
Dan Rose
a9e8784c04
Make case fallthrough explicit (#153)
* Make case fallthrough explicit
2020-04-13 21:05:42 -05:00
Dan Rose
5781044edd
Implement rmw_set_log_severity (#149) 2020-04-13 16:08:25 -05:00
Mikael Arguedas
0450e2d840
security-context -> enclave (#146)
Signed-off-by: Mikael Arguedas <mikael.arguedas@gmail.com>
2020-04-13 10:29:31 -03:00
Dirk Thomas
5c6b187fa9
rename rosidl_generator_c namespace to rosidl_runtime_c (#150)
Signed-off-by: Dirk Thomas <dirk-thomas@users.noreply.github.com>
2020-04-10 22:14:29 -07:00
Alejandro Hernández Cordero
654f3d46aa
Added rosidl_runtime c and cpp dependencies (#138)
* Replaced rosidl_generator_x with rosidl_runtime_x

Signed-off-by: ahcorde <ahcorde@gmail.com>

* Fixed package.zml

Signed-off-by: ahcorde <ahcorde@gmail.com>
2020-04-10 12:26:45 +02:00
Dan Rose
cf22b2608a
Remove cyclonedds_cmake_module (#139)
Delete cyclonedds_cmake_module package and remove dependencies on it.
This is not needed, since Eclipse Cyclone DDS already provides a package configuration file (CycloneDDSConfig.cmake)
2020-04-09 11:45:50 -05:00