-
Notifications
You must be signed in to change notification settings - Fork 254
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Review fixes in rosbag2 composable player
- Cleanups in CMakeLists.txt - Expose only the necessary constructors in rosbag2::player - Add visibility control - Add missing dependencies in package.xml - Add component_player.hpp file Signed-off-by: Michael Orlov <michael.orlov@apex.ai>
- Loading branch information
1 parent
3cf1020
commit c00bf42
Showing
6 changed files
with
167 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
// Copyright 2024 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. | ||
|
||
/* This header must be included by all rclcpp headers which declare symbols | ||
* which are defined in the rclcpp library. When not building the rclcpp | ||
* library, i.e. when using the headers in other package's code, the contents | ||
* of this header change the visibility of certain symbols which the rclcpp | ||
* library cannot have, but the consuming code must have inorder to link. | ||
*/ | ||
|
||
#ifndef ROSBAG2__COMPONENT_PLAYER_HPP_ | ||
#define ROSBAG2__COMPONENT_PLAYER_HPP_ | ||
|
||
#include <string> | ||
|
||
#include "rclcpp/node_options.hpp" | ||
#include "rosbag2/visibility_control.hpp" | ||
#include "rosbag2_transport/player.hpp" | ||
|
||
namespace rosbag2 | ||
{ | ||
class Player : public rosbag2_transport::Player { | ||
public: | ||
/// \brief Constructor and entry point for the composable player. | ||
/// Will call Player(node_name, node_options) constructor with node_name = "rosbag2_player". | ||
/// \param node_options Node options which will be used during construction of the underlying | ||
/// node. | ||
ROSBAG2_PUBLIC | ||
explicit Player(const rclcpp::NodeOptions & node_options); | ||
|
||
/// \brief Default constructor and entry point for the composable player. | ||
/// Will construct Player class and initialize play_options, storage_options from node | ||
/// parameters. At the end will call Player::play() to automatically start playback in a | ||
/// separate thread. | ||
/// \param node_name Name for the underlying node. | ||
/// \param node_options Node options which will be used during construction of the underlying | ||
/// node. | ||
ROSBAG2_PUBLIC | ||
explicit Player( | ||
const std::string & node_name = "rosbag2_player", | ||
const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions()); | ||
}; | ||
} // namespace rosbag2 | ||
|
||
#endif // ROSBAG2__COMPONENT_PLAYER_HPP_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
// Copyright 2024 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. | ||
|
||
/* This header must be included by all rclcpp headers which declare symbols | ||
* which are defined in the rclcpp library. When not building the rclcpp | ||
* library, i.e. when using the headers in other package's code, the contents | ||
* of this header change the visibility of certain symbols which the rclcpp | ||
* library cannot have, but the consuming code must have inorder to link. | ||
*/ | ||
|
||
#ifndef ROSBAG2__VISIBILITY_CONTROL_HPP_ | ||
#define ROSBAG2__VISIBILITY_CONTROL_HPP_ | ||
|
||
// This logic was borrowed (then namespaced) from the examples on the gcc wiki: | ||
// https://gcc.gnu.org/wiki/Visibility | ||
|
||
#if defined _WIN32 || defined __CYGWIN__ | ||
#ifdef __GNUC__ | ||
#define ROSBAG2_EXPORT __attribute__ ((dllexport)) | ||
#define ROSBAG2_IMPORT __attribute__ ((dllimport)) | ||
#else | ||
#define ROSBAG2_EXPORT __declspec(dllexport) | ||
#define ROSBAG2_IMPORT __declspec(dllimport) | ||
#endif | ||
#ifdef ROSBAG2_BUILDING_LIBRARY | ||
#define ROSBAG2_PUBLIC ROSBAG2_EXPORT | ||
#else | ||
#define ROSBAG2_PUBLIC ROSBAG2_IMPORT | ||
#endif | ||
#define ROSBAG2_PUBLIC_TYPE ROSBAG2_PUBLIC | ||
#define ROSBAG2_LOCAL | ||
#else | ||
#define ROSBAG2_EXPORT __attribute__ ((visibility("default"))) | ||
#define ROSBAG2_IMPORT | ||
#if __GNUC__ >= 4 | ||
#define ROSBAG2_PUBLIC __attribute__ ((visibility("default"))) | ||
#define ROSBAG2_LOCAL __attribute__ ((visibility("hidden"))) | ||
#else | ||
#define ROSBAG2_PUBLIC | ||
#define ROSBAG2_LOCAL | ||
#endif | ||
#define ROSBAG2_PUBLIC_TYPE | ||
#endif | ||
|
||
#endif // ROSBAG2__VISIBILITY_CONTROL_HPP_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,39 @@ | ||
#include "rosbag2_transport/player.hpp" | ||
// Copyright 2024 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. | ||
|
||
namespace rosbag2 { | ||
class Player : public rosbag2_transport::Player { | ||
using rosbag2_transport::Player::Player; | ||
}; | ||
} | ||
/* This header must be included by all rclcpp headers which declare symbols | ||
* which are defined in the rclcpp library. When not building the rclcpp | ||
* library, i.e. when using the headers in other package's code, the contents | ||
* of this header change the visibility of certain symbols which the rclcpp | ||
* library cannot have, but the consuming code must have inorder to link. | ||
*/ | ||
|
||
#include "rclcpp_components/register_node_macro.hpp" | ||
#include "rosbag2/component_player.hpp" | ||
|
||
namespace rosbag2 | ||
{ | ||
Player::Player(const rclcpp::NodeOptions & node_options) | ||
: Player("rosbag2_player", node_options) {} | ||
|
||
Player::Player( | ||
const std::string & node_name, | ||
const rclcpp::NodeOptions & node_options) | ||
: rosbag2_transport::Player(node_name, node_options) {} | ||
} // namespace rosbag2 | ||
|
||
// Register the component with class_loader. | ||
// This acts as a sort of entry point, allowing the component to be | ||
// This acts as an entry point, allowing the component to be | ||
// discoverable when its library is being loaded into a running process. | ||
RCLCPP_COMPONENTS_REGISTER_NODE(rosbag2::Player) | ||
RCLCPP_COMPONENTS_REGISTER_NODE(rosbag2::Player) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters