-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add get_actual_qos() for subscriptions #177
Conversation
Signed-off-by: Miaofei <miaofei@amazon.com>
@emersonknapp - please run the following CI job:
Please also enable the use of OpenSplice. |
Hi @emersonknapp, can you please re-run the CI when you get a chance? Thanks! |
Hi @ivanpauno, it looks like we don't have anybody on our side today who can start a CI run for us. Can you please kick off a CI run for this PR? Thanks! |
rmw_connext is failing to build because of a visibility problem (fastrtps and opensplice were built ok).
I guess that when you explicitly specialize a template you have to use the visibility macros ( I'm not pretty sure if that will solve the problem. PS: If you don't have a windows environment available, let me know and I will try to solve the problem. |
I tested it on windows, the correct way of doing it is: template RMW_CONNEXT_SHARED_CPP_PUBLIC
void dds_qos_to_rmw_qos<DDS::DataWriterQos>(
const DDS::DataWriterQos & dds_qos,
rmw_qos_profile_t * qos); The visibility macro has to be after the Note: rmw_fastrtps_shared_cpp is built as an static library, so the problem didn't appear there. rmw_connext_shared_cpp is built as a shared library. |
So |
I think that visibility macros can only by used in the template specializations (and not in the template itself). And the template specialization should stay in the cpp file. I don't know if a workaround is possible. |
Putting the visibility macro on the explicit template instantiation seemed to have solved the linker error. Thank you! Putting the visibility macro on the template declaration in the |
If it doesn't do nothing, I prefer not adding it. The extern template RMW_CONNEXT_SHARED_CPP_PUBLIC
void dds_qos_to_rmw_qos<DDS::DataWriterQos>(
const DDS::DataWriterQos & dds_qos,
rmw_qos_profile_t * qos);
extern template RMW_CONNEXT_SHARED_CPP_PUBLIC
void dds_qos_to_rmw_qos<DDS::DataReaderQos>(
const DDS::DataReaderQos & dds_qos,
rmw_qos_profile_t * qos); That's more explicit, as you know what template specializations are available, and the visibility macro is only needed in the header. Edit: The |
@ivanpauno, I've updated the other pull requests with your suggestion. Can you please kick off a CI run again? Thanks! |
Thanks! |
Currently, publishers have the get_actual_qos() feature/function. It would make sense for subscriptions to have them, too.
Depends on ros2/rmw_implementation#61
Depends on ros2/rmw_fastrtps#287
Depends on ros2/rmw_connext#358
Depends on ros2/rmw_opensplice#271
Blocks ros2/rcl#455
Blocks ros2/rclcpp#754