Skip to content

Commit

Permalink
Create one Participant per Context instead of one per Node
Browse files Browse the repository at this point in the history
Add example test of how to access message type supports from rmw_dds_common

Signed-off-by: ivanpauno <[email protected]>

Move from one participant per node to one participant per context.

Signed-off-by: ivanpauno <[email protected]>

Reimplemented rmw_node_info_and_types

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Implement rmw_count

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Please linter

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Correct rmw_service_server_is_available

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Implement rmw_service_names_and_types and rmw_topic_names_and_types

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Add guard condition to listener thread

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Stop using group data. Use the new group cache

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Delete old group data stuff

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Further changes after rebasing with master

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Update after changes in rmw_dds_common

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Delete old comment. Update default domain id macro

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Address some reviewer comments

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Fix some upstream test failures

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Correct linter failure

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Add node sanity check in __rmw_destroy_service

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Correct error in __rmw_destroy_publisher

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Addressed per review comments

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Minimal cleanup

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Updated rmw_fastrtps_dynamic_cpp

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Address peer review comments

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Create participant in first use, destruct it after last node is destroyed

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Address PR comments

Signed-off-by: Ivan Santiago Paunovic <[email protected]>

Add context name and namespace

Signed-off-by: Ivan Santiago Paunovic <[email protected]>
  • Loading branch information
ivanpauno committed Jan 28, 2020
1 parent 3adf852 commit 8f80df9
Show file tree
Hide file tree
Showing 79 changed files with 3,844 additions and 2,668 deletions.
15 changes: 15 additions & 0 deletions rmw_fastrtps_cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ endif()
find_package(ament_cmake_ros REQUIRED)

find_package(rcutils REQUIRED)
find_package(rmw_dds_common REQUIRED)
find_package(rmw_fastrtps_shared_cpp REQUIRED)

find_package(fastrtps_cmake_module REQUIRED)
Expand All @@ -53,6 +54,9 @@ add_library(rmw_fastrtps_cpp
src/get_service.cpp
src/get_subscriber.cpp
src/identifier.cpp
src/listener_thread.cpp
src/publisher.cpp
src/register_node.cpp
src/rmw_logging.cpp
src/rmw_client.cpp
src/rmw_compare_gids_equal.cpp
Expand All @@ -70,6 +74,7 @@ add_library(rmw_fastrtps_cpp
src/rmw_publisher.cpp
src/rmw_request.cpp
src/rmw_response.cpp
src/rmw_security.cpp
src/rmw_serialize.cpp
src/rmw_service.cpp
src/rmw_service_names_and_types.cpp
Expand All @@ -81,7 +86,11 @@ add_library(rmw_fastrtps_cpp
src/rmw_wait.cpp
src/rmw_wait_set.cpp
src/serialization_format.cpp
src/subscription.cpp
src/type_support_common.cpp
src/gid__type_support.cpp
src/node_entities_info__type_support.cpp
src/participant_entities_info__type_support.cpp
)
target_link_libraries(rmw_fastrtps_cpp
fastcdr fastrtps)
Expand All @@ -91,6 +100,7 @@ ament_target_dependencies(rmw_fastrtps_cpp
"rcutils"
"rosidl_typesupport_fastrtps_c"
"rosidl_typesupport_fastrtps_cpp"
"rmw_dds_common"
"rmw_fastrtps_shared_cpp"
"rmw"
"rosidl_generator_c"
Expand Down Expand Up @@ -121,6 +131,11 @@ register_rmw_implementation(
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()

ament_add_gtest(test_gid_message test/test_gid_message.cpp)
if(TARGET test_gid_message)
target_link_libraries(test_gid_message ${PROJECT_NAME})
endif()
endif()

ament_package(
Expand Down
36 changes: 36 additions & 0 deletions rmw_fastrtps_cpp/include/rmw_fastrtps_cpp/publisher.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright 2017-2019 Open Source Robotics Foundation, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef RMW_FASTRTPS_CPP__PUBLISHER_HPP_
#define RMW_FASTRTPS_CPP__PUBLISHER_HPP_

#include "rmw/rmw.h"
#include "rmw_fastrtps_shared_cpp/custom_participant_info.hpp"

namespace rmw_fastrtps_cpp
{

rmw_publisher_t *
create_publisher(
const CustomParticipantInfo * participant_info,
const rosidl_message_type_support_t * type_supports,
const char * topic_name,
const rmw_qos_profile_t * qos_policies,
const rmw_publisher_options_t * publisher_options,
bool keyed,
bool create_publisher_listener);

} // namespace rmw_fastrtps_cpp

#endif // RMW_FASTRTPS_CPP__PUBLISHER_HPP_
41 changes: 41 additions & 0 deletions rmw_fastrtps_cpp/include/rmw_fastrtps_cpp/register_node.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Copyright 2019 Open Source Robotics Foundation, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef RMW_FASTRTPS_CPP__REGISTER_NODE_HPP_
#define RMW_FASTRTPS_CPP__REGISTER_NODE_HPP_

#include "rmw/init.h"
#include "rmw/types.h"

namespace rmw_fastrtps_cpp
{

/// Register node in context.
/**
* Function that should be called when creating a node,
* before using `context->impl`.
*/
rmw_ret_t
register_node(rmw_context_t * context);

/// Unregister node in context.
/**
* Function that should be called when destroying a node.
*/
rmw_ret_t
unregister_node(rmw_context_t * context);

} // namespace rmw_fastrtps_cpp

#endif // RMW_FASTRTPS_CPP__REGISTER_NODE_HPP_
38 changes: 38 additions & 0 deletions rmw_fastrtps_cpp/include/rmw_fastrtps_cpp/subscription.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Copyright 2019 Open Source Robotics Foundation, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef RMW_FASTRTPS_CPP__SUBSCRIPTION_HPP_
#define RMW_FASTRTPS_CPP__SUBSCRIPTION_HPP_

#include "rmw/rmw.h"
#include "rmw/subscription_options.h"

#include "rmw_fastrtps_shared_cpp/custom_participant_info.hpp"

namespace rmw_fastrtps_cpp
{

rmw_subscription_t *
create_subscription(
const CustomParticipantInfo * participant_info,
const rosidl_message_type_support_t * type_supports,
const char * topic_name,
const rmw_qos_profile_t * qos_policies,
const rmw_subscription_options_t * subscription_options,
bool keyed,
bool create_subscription_listener);

} // namespace rmw_fastrtps_cpp

#endif // RMW_FASTRTPS_CPP__SUBSCRIPTION_HPP_
2 changes: 2 additions & 0 deletions rmw_fastrtps_cpp/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
<build_depend>fastrtps_cmake_module</build_depend>
<build_depend>rcutils</build_depend>
<build_depend>rmw</build_depend>
<build_depend>rmw_dds_common</build_depend>
<build_depend>rmw_fastrtps_shared_cpp</build_depend>
<build_depend>rosidl_generator_c</build_depend>
<build_depend>rosidl_generator_cpp</build_depend>
Expand All @@ -30,6 +31,7 @@
<build_export_depend>fastrtps</build_export_depend>
<build_export_depend>fastrtps_cmake_module</build_export_depend>
<build_export_depend>rcutils</build_export_depend>
<build_export_depend>rmw_dds_common</build_export_depend>
<build_export_depend>rmw_fastrtps_shared_cpp</build_export_depend>
<build_export_depend>rmw</build_export_depend>
<build_export_depend>rosidl_generator_c</build_export_depend>
Expand Down
4 changes: 3 additions & 1 deletion rmw_fastrtps_cpp/src/get_participant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#include "rmw_fastrtps_cpp/get_participant.hpp"

#include "rmw_fastrtps_shared_cpp/custom_participant_info.hpp"
#include "rmw_fastrtps_shared_cpp/rmw_context_impl.hpp"

#include "rmw_fastrtps_cpp/identifier.hpp"

namespace rmw_fastrtps_cpp
Expand All @@ -29,7 +31,7 @@ get_participant(rmw_node_t * node)
if (node->implementation_identifier != eprosima_fastrtps_identifier) {
return nullptr;
}
auto impl = static_cast<CustomParticipantInfo *>(node->data);
auto impl = static_cast<CustomParticipantInfo *>(node->context->impl->participant_info);
return impl->participant;
}

Expand Down
52 changes: 52 additions & 0 deletions rmw_fastrtps_cpp/src/gid__type_support.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// Copyright 2019 Open Source Robotics Foundation, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include <cstddef>

#include "rosidl_generator_c/message_type_support_struct.h"
// rosidl_typesupport_cpp/message_type_support.hpp is installed by rosidl_generator_cpp
#include "rosidl_typesupport_cpp/message_type_support.hpp"
#include "rmw_dds_common/msg/gid__struct.hpp"
#include "rmw_dds_common/msg/gid__rosidl_typesupport_fastrtps_cpp.hpp"
#include "rmw_fastrtps_cpp/visibility_control.h"

namespace rosidl_typesupport_cpp
{

template<>
RMW_FASTRTPS_CPP_PUBLIC
const rosidl_message_type_support_t *
get_message_type_support_handle<rmw_dds_common::msg::Gid>()
{
return ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(
rosidl_typesupport_fastrtps_cpp, rmw_dds_common, msg, Gid)();
}

#ifdef __cplusplus
extern "C"
{
#endif

RMW_FASTRTPS_CPP_PUBLIC
const rosidl_message_type_support_t *
ROSIDL_TYPESUPPORT_INTERFACE__MESSAGE_SYMBOL_NAME(
rosidl_typesupport_cpp, rmw_dds_common, msg, Gid)()
{
return get_message_type_support_handle<rmw_dds_common::msg::Gid>();
}

#ifdef __cplusplus
}
#endif
} // namespace rosidl_typesupport_cpp
Loading

0 comments on commit 8f80df9

Please sign in to comment.