Skip to content

Commit 88d15f4

Browse files
authored
Split rcl_bindings.cpp file (RobotWebTools#1100)
This PR splits the large rcl_bindings.cpp file into several smaller, dedicated binding files to improve modularity and maintainability. Key changes include the addition of new files (e.g. rcl_node_bindings.cpp, rcl_names_bindings.cpp, rcl_logging_bindings.cpp, etc.), updates to the addon.cpp and `binding.gyp` files to reference these new modules, and renaming of certain initialization functions for consistency. Meanwhile, this patch fixes the GitHub actions failure for Linux platform. Fix: RobotWebTools#1099
1 parent c21bdcd commit 88d15f4

36 files changed

+2713
-2044
lines changed

.github/workflows/identify-ros-distro.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@ jobs:
2727
run: |
2828
if ${ROLLING_VAR} == true; then
2929
echo "::set-output name=distro::rolling"
30-
echo "::set-output name=linuxos::ubuntu-24.04"
30+
echo "::set-output name=linuxos::ubuntu:24.04"
3131
elif ${JAZZY_VAR} == true; then
3232
echo "::set-output name=distro::jazzy"
33-
echo "::set-output name=linuxos::ubuntu-24.04"
33+
echo "::set-output name=linuxos::ubuntu:24.04"
3434
elif ${IRON_VAR} == true; then
3535
echo "::set-output name=distro::iron"
36-
echo "::set-output name=linuxos::ubuntu-22.04"
36+
echo "::set-output name=linuxos::ubuntu:22.04"
3737
elif ${HUMBLE_VAR} == true; then
3838
echo "::set-output name=distro::humble"
39-
echo "::set-output name=linuxos::ubuntu-22.04"
39+
echo "::set-output name=linuxos::ubuntu:22.04"
4040
else
4141
echo "Unable to map branch name to ROS distro, using ROLLING as default"
4242
echo "::set-output name=distro::rolling"
43-
echo "::set-output name=linuxos::ubuntu-24.04"
43+
echo "::set-output name=linuxos::ubuntu:24.04"
4444
fi

.github/workflows/linux-build-and-test.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ jobs:
2424

2525
build:
2626
needs: identify-ros-distro
27-
runs-on: ${{ needs.identify-ros-distro.outputs.linuxos }}
27+
runs-on: ubuntu-latest
2828
container:
29-
image: osrf/ros:${{ needs.identify-ros-distro.outputs.distro }}-desktop
29+
image: ${{ needs.identify-ros-distro.outputs.linuxos }}
3030
strategy:
3131
fail-fast: false
3232
matrix:
@@ -39,6 +39,8 @@ jobs:
3939

4040
- name: Setup ROS2
4141
uses: ros-tooling/setup-ros@v0.7
42+
with:
43+
required-ros-distributions: ${{ needs.identify-ros-distro.outputs.distro }}
4244

4345
- name: Install test-msgs on Linux
4446
run: |

binding.gyp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,20 @@
2323
'./src/handle_manager.cpp',
2424
'./src/rcl_action_bindings.cpp',
2525
'./src/rcl_bindings.cpp',
26+
'./src/rcl_client_bindings.cpp',
27+
'./src/rcl_context_bindings.cpp',
28+
'./src/rcl_graph_bindings.cpp',
29+
'./src/rcl_guard_condition_bindings.cpp',
2630
'./src/rcl_handle.cpp',
2731
'./src/rcl_lifecycle_bindings.cpp',
32+
'./src/rcl_logging_bindings.cpp',
33+
'./src/rcl_names_bindings.cpp',
34+
'./src/rcl_node_bindings.cpp',
35+
'./src/rcl_publisher_bindings.cpp',
36+
'./src/rcl_service_bindings.cpp',
37+
'./src/rcl_subscription_bindings.cpp',
38+
'./src/rcl_time_point_bindings.cpp',
39+
'./src/rcl_timer_bindings.cpp',
2840
'./src/rcl_utilities.cpp',
2941
'./src/shadow_node.cpp',
3042
],

src/addon.cpp

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,20 @@
1818
#include "macros.h"
1919
#include "rcl_action_bindings.h"
2020
#include "rcl_bindings.h"
21+
#include "rcl_client_bindings.h"
22+
#include "rcl_context_bindings.h"
23+
#include "rcl_graph_bindings.h"
24+
#include "rcl_guard_condition_bindings.h"
2125
#include "rcl_handle.h"
2226
#include "rcl_lifecycle_bindings.h"
27+
#include "rcl_logging_bindings.h"
28+
#include "rcl_names_bindings.h"
29+
#include "rcl_node_bindings.h"
30+
#include "rcl_publisher_bindings.h"
31+
#include "rcl_service_bindings.h"
32+
#include "rcl_subscription_bindings.h"
33+
#include "rcl_time_point_bindings.h"
34+
#include "rcl_timer_bindings.h"
2335
#include "rcl_utilities.h"
2436
#include "shadow_node.h"
2537

@@ -47,11 +59,23 @@ Napi::Object InitModule(Napi::Env env, Napi::Object exports) {
4759
}
4860
#endif
4961

50-
// Init the C++ bindings.
5162
rclnodejs::StoreEnv(env);
63+
// Init the C++ bindings.
5264
rclnodejs::InitBindings(env, exports);
53-
rclnodejs::InitAction(env, exports);
54-
rclnodejs::InitLifecycle(env, exports);
65+
rclnodejs::InitClientBindings(env, exports);
66+
rclnodejs::InitContextBindings(env, exports);
67+
rclnodejs::InitGraphBindings(env, exports);
68+
rclnodejs::InitGuardConditionBindings(env, exports);
69+
rclnodejs::InitLoggingBindings(env, exports);
70+
rclnodejs::InitNamesBindings(env, exports);
71+
rclnodejs::InitNodeBindings(env, exports);
72+
rclnodejs::InitPublisherBindings(env, exports);
73+
rclnodejs::InitServiceBindings(env, exports);
74+
rclnodejs::InitSubscriptionBindings(env, exports);
75+
rclnodejs::InitTimePointBindings(env, exports);
76+
rclnodejs::InitTimerBindings(env, exports);
77+
rclnodejs::InitActionBindings(env, exports);
78+
rclnodejs::InitLifecycleBindings(env, exports);
5579
rclnodejs::ShadowNode::Init(env, exports);
5680
rclnodejs::RclHandle::Init(env, exports);
5781

src/rcl_action_bindings.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
#include <memory>
2525
#include <string>
26-
#include <vector>
2726

2827
#include "handle_manager.h"
2928
#include "macros.h"
@@ -775,7 +774,7 @@ Napi::Value ActionGetNamesAndTypes(const Napi::CallbackInfo& info) {
775774
return result_list;
776775
}
777776

778-
Napi::Object InitAction(Napi::Env env, Napi::Object exports) {
777+
Napi::Object InitActionBindings(Napi::Env env, Napi::Object exports) {
779778
exports.Set("actionCreateClient",
780779
Napi::Function::New(env, ActionCreateClient));
781780
exports.Set("actionCreateServer",

src/rcl_action_bindings.h

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -16,48 +16,10 @@
1616
#define SRC_RCL_ACTION_BINDINGS_H_
1717

1818
#include <napi.h>
19-
#include <rcl_action/rcl_action.h>
20-
21-
#include <memory>
22-
#include <string>
23-
#include <vector>
24-
25-
#include "rcl_bindings.h"
2619

2720
namespace rclnodejs {
2821

29-
Napi::Value ActionCreateClient(const Napi::CallbackInfo& info);
30-
Napi::Value ActionCreateServer(const Napi::CallbackInfo& info);
31-
Napi::Value ActionServerIsAvailable(const Napi::CallbackInfo& info);
32-
Napi::Value ActionSendGoalRequest(const Napi::CallbackInfo& info);
33-
Napi::Value ActionTakeGoalRequest(const Napi::CallbackInfo& info);
34-
Napi::Value ActionSendGoalResponse(const Napi::CallbackInfo& info);
35-
Napi::Value ActionTakeGoalResponse(const Napi::CallbackInfo& info);
36-
Napi::Value ActionSendCancelRequest(const Napi::CallbackInfo& info);
37-
Napi::Value ActionTakeCancelRequest(const Napi::CallbackInfo& info);
38-
Napi::Value ActionSendCancelResponse(const Napi::CallbackInfo& info);
39-
Napi::Value ActionTakeCancelResponse(const Napi::CallbackInfo& info);
40-
Napi::Value ActionSendResultRequest(const Napi::CallbackInfo& info);
41-
Napi::Value ActionTakeResultRequest(const Napi::CallbackInfo& info);
42-
Napi::Value ActionSendResultResponse(const Napi::CallbackInfo& info);
43-
Napi::Value ActionTakeResultResponse(const Napi::CallbackInfo& info);
44-
Napi::Value ActionAcceptNewGoal(const Napi::CallbackInfo& info);
45-
Napi::Value ActionUpdateGoalState(const Napi::CallbackInfo& info);
46-
Napi::Value ActionPublishStatus(const Napi::CallbackInfo& info);
47-
Napi::Value ActionTakeStatus(const Napi::CallbackInfo& info);
48-
Napi::Value ActionGoalHandleIsActive(const Napi::CallbackInfo& info);
49-
Napi::Value ActionNotifyGoalDone(const Napi::CallbackInfo& info);
50-
Napi::Value ActionGoalHandleGetStatus(const Napi::CallbackInfo& info);
51-
Napi::Value ActionPublishFeedback(const Napi::CallbackInfo& info);
52-
Napi::Value ActionTakeFeedback(const Napi::CallbackInfo& info);
53-
Napi::Value ActionProcessCancelRequest(const Napi::CallbackInfo& info);
54-
Napi::Value ActionServerGoalExists(const Napi::CallbackInfo& info);
55-
Napi::Value ActionExpireGoals(const Napi::CallbackInfo& info);
56-
Napi::Value ActionGetClientNamesAndTypesByNode(const Napi::CallbackInfo& info);
57-
Napi::Value ActionGetServerNamesAndTypesByNode(const Napi::CallbackInfo& info);
58-
Napi::Value ActionGetNamesAndTypes(const Napi::CallbackInfo& info);
59-
60-
Napi::Object InitAction(Napi::Env env, Napi::Object exports);
22+
Napi::Object InitActionBindings(Napi::Env env, Napi::Object exports);
6123

6224
} // namespace rclnodejs
6325

0 commit comments

Comments
 (0)