Skip to content
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

Serialization Refactor #30

Merged
merged 11 commits into from
Jun 1, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.swp
32 changes: 8 additions & 24 deletions iceoryx_ros2_bridge/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,38 +27,22 @@ find_package(rosidl_generator_cpp REQUIRED)
find_package(rosidl_typesupport_cpp REQUIRED)
find_package(rosidl_typesupport_introspection_cpp REQUIRED)

add_library(iceoryx_typesupport_helpers
src/typesupport_helpers.cpp
)
ament_target_dependencies(iceoryx_typesupport_helpers
ament_index_cpp
rclcpp
rcpputils
rosidl_generator_cpp
rosidl_typesupport_introspection_cpp
rosidl_typesupport_cpp
)

add_library(iceoryx_generic_transport
src/generic_publisher.cpp
src/generic_subscription.cpp
)
target_link_libraries(iceoryx_generic_transport
iceoryx_typesupport_helpers
)
ament_target_dependencies(iceoryx_generic_transport
rclcpp
)

add_executable(iceoryx_ros2_bridge
src/iceoryx_ros2_bridge.cpp
src/generic_publisher.cpp
src/generic_subscription.cpp
src/typesupport_helpers.cpp
)
target_link_libraries(iceoryx_ros2_bridge
iceoryx_generic_transport
iceoryx_posh::iceoryx_posh
)
ament_target_dependencies(iceoryx_ros2_bridge
ament_index_cpp
rclcpp
rcpputils
rosidl_generator_cpp
rosidl_typesupport_introspection_cpp
rosidl_typesupport_cpp
rmw_iceoryx_cpp
)
install(
Expand Down
2 changes: 1 addition & 1 deletion iceoryx_ros2_bridge/src/generic_publisher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ void GenericPublisher::publish(std::shared_ptr<rmw_serialized_message_t> message
void GenericPublisher::publish(const rmw_serialized_message_t * message)
{
auto return_code = rcl_publish_serialized_message(
get_publisher_handle(), message, NULL);
get_publisher_handle().get(), message, NULL);

if (return_code != RCL_RET_OK) {
rclcpp::exceptions::throw_from_rcl_error(return_code, "failed to publish serialized message");
Expand Down
4 changes: 2 additions & 2 deletions iceoryx_ros2_bridge/src/iceoryx_ros2_bridge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ void publish_to_iceoryx(
std::vector<char> payload_vector{};
rmw_iceoryx_cpp::serialize(
ros_msg,
introspection_ts,
ts,
payload_vector);
free(ros_msg);

Expand Down Expand Up @@ -140,7 +140,7 @@ void publish_to_ros2(
introspection_ts->init_function(ros_msg, rosidl_runtime_cpp::MessageInitialization::ALL);
rmw_iceoryx_cpp::deserialize(
static_cast<const char *>(chunk),
introspection_ts,
ts,
ros_msg);

if (false == serialize_into(ros_msg, ts, &serialized_msg)) {
Expand Down
10 changes: 8 additions & 2 deletions rmw_iceoryx_cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,15 @@ if(BUILD_TESTING)
ament_lint_auto_find_test_dependencies()

find_package(ament_cmake_gtest REQUIRED)
ament_add_gtest(${PROJECT_NAME}_tests test/iceoryx_name_conversion_test.cpp)
find_package(test_msgs REQUIRED)
ament_add_gtest(test_name_conversion test/iceoryx_name_conversion_test.cpp)
target_link_libraries(test_name_conversion ${PROJECT_NAME})

target_link_libraries(${PROJECT_NAME}_tests ${PROJECT_NAME})
ament_add_gtest(test_message_serialization test/iceoryx_serialization_test.cpp)
target_link_libraries(test_message_serialization ${PROJECT_NAME})
ament_target_dependencies(test_message_serialization
test_msgs
)
endif()

ament_export_include_directories(include)
Expand Down
16 changes: 3 additions & 13 deletions rmw_iceoryx_cpp/include/rmw_iceoryx_cpp/iceoryx_deserialize.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,15 @@
#ifndef RMW_ICEORYX_CPP__ICEORYX_DESERIALIZE_HPP_
#define RMW_ICEORYX_CPP__ICEORYX_DESERIALIZE_HPP_

struct rosidl_typesupport_introspection_c__MessageMembers;

namespace rosidl_typesupport_introspection_cpp
{
struct MessageMembers;
}
struct rosidl_message_type_support_t;

namespace rmw_iceoryx_cpp
{

// TODO(karsten1987): This should be `uint8`, really
const char * deserialize(
const char * serialized_msg,
const rosidl_typesupport_introspection_c__MessageMembers * members,
void * ros_message);

const char * deserialize(
void deserialize(
const char * serialized_msg,
const rosidl_typesupport_introspection_cpp::MessageMembers * members,
const rosidl_message_type_support_t * type_supports,
void * ros_message);

} // namespace rmw_iceoryx_cpp
Expand Down
16 changes: 3 additions & 13 deletions rmw_iceoryx_cpp/include/rmw_iceoryx_cpp/iceoryx_serialize.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,15 @@

#include <vector>

struct rosidl_typesupport_introspection_c__MessageMembers;

namespace rosidl_typesupport_introspection_cpp
{
struct MessageMembers;
}
struct rosidl_message_type_support_t;

namespace rmw_iceoryx_cpp
{

void serialize(
const void * ros_message,
const rosidl_typesupport_introspection_c__MessageMembers * members,
std::vector<char> & payloadVector);

void serialize(
const void * ros_message,
const rosidl_typesupport_introspection_cpp::MessageMembers * members,
std::vector<char> & payloadVector);
const rosidl_message_type_support_t * type_supports,
std::vector<char> & payload_vector);

} // namespace rmw_iceoryx_cpp
#endif // RMW_ICEORYX_CPP__ICEORYX_SERIALIZE_HPP_
1 change: 1 addition & 0 deletions rmw_iceoryx_cpp/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<test_depend>ament_cmake_gtest</test_depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<test_depend>test_msgs</test_depend>

<export>
<build_type>ament_cmake</build_type>
Expand Down
Loading