From b1e1361f307b8e2cfc81d33db923b03d60dafcab Mon Sep 17 00:00:00 2001
From: TetsuKawa <kawaguchitnon@icloud.com>
Date: Wed, 15 May 2024 14:10:30 +0900
Subject: [PATCH 1/4] feat: componentize-emergency-handler

Signed-off-by: TetsuKawa <kawaguchitnon@icloud.com>
---
 system/emergency_handler/CMakeLists.txt       |  9 ++++--
 .../launch/emergency_handler.launch.xml       |  2 +-
 system/emergency_handler/package.xml          |  1 +
 .../emergency_handler_core.cpp                |  3 ++
 .../emergency_handler_node.cpp                | 32 -------------------
 5 files changed, 12 insertions(+), 35 deletions(-)
 delete mode 100644 system/emergency_handler/src/emergency_handler/emergency_handler_node.cpp

diff --git a/system/emergency_handler/CMakeLists.txt b/system/emergency_handler/CMakeLists.txt
index b7895b07f6e4c..0475cdbe57dd8 100644
--- a/system/emergency_handler/CMakeLists.txt
+++ b/system/emergency_handler/CMakeLists.txt
@@ -4,11 +4,16 @@ project(emergency_handler)
 find_package(autoware_cmake REQUIRED)
 autoware_package()
 
-ament_auto_add_executable(emergency_handler
-  src/emergency_handler/emergency_handler_node.cpp
+ament_auto_add_library(${PROJECT_NAME} SHARED
   src/emergency_handler/emergency_handler_core.cpp
 )
 
+rclcpp_components_register_node(${PROJECT_NAME}
+  PLUGIN "EmergencyHandler"
+  EXECUTABLE ${PROJECT_NAME}_node
+  EXECUTOR MultiThreadedExecutor
+)
+
 ament_auto_package(INSTALL_TO_SHARE
   launch
   config
diff --git a/system/emergency_handler/launch/emergency_handler.launch.xml b/system/emergency_handler/launch/emergency_handler.launch.xml
index 308eaf90dbb69..203c13bd94e0a 100644
--- a/system/emergency_handler/launch/emergency_handler.launch.xml
+++ b/system/emergency_handler/launch/emergency_handler.launch.xml
@@ -16,7 +16,7 @@
   <arg name="config_file" default="$(find-pkg-share emergency_handler)/config/emergency_handler.param.yaml"/>
 
   <!-- emergency_handler -->
-  <node pkg="emergency_handler" exec="emergency_handler" name="emergency_handler" output="screen">
+  <node pkg="emergency_handler" exec="emergency_handler_node" name="emergency_handler" output="screen">
     <remap from="~/input/hazard_status" to="$(var input_hazard_status)"/>
     <remap from="~/input/prev_control_command" to="$(var input_prev_control_command)"/>
     <remap from="~/input/odometry" to="$(var input_odometry)"/>
diff --git a/system/emergency_handler/package.xml b/system/emergency_handler/package.xml
index 10282297017b1..97344f9b8c594 100644
--- a/system/emergency_handler/package.xml
+++ b/system/emergency_handler/package.xml
@@ -18,6 +18,7 @@
   <depend>autoware_auto_vehicle_msgs</depend>
   <depend>nav_msgs</depend>
   <depend>rclcpp</depend>
+  <depend>rclcpp_components</depend>
   <depend>std_msgs</depend>
   <depend>std_srvs</depend>
   <depend>tier4_system_msgs</depend>
diff --git a/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp b/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
index db3ad40249bfb..586318eb7c1ec 100644
--- a/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
+++ b/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
@@ -459,3 +459,6 @@ bool EmergencyHandler::isStopped()
 
   return false;
 }
+
+#include <rclcpp_components/register_node_macro.hpp>
+RCLCPP_COMPONENTS_REGISTER_NODE(EmergencyHandler)
\ No newline at end of file
diff --git a/system/emergency_handler/src/emergency_handler/emergency_handler_node.cpp b/system/emergency_handler/src/emergency_handler/emergency_handler_node.cpp
deleted file mode 100644
index 5b60117cc3ff4..0000000000000
--- a/system/emergency_handler/src/emergency_handler/emergency_handler_node.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2020 Tier IV, 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 "emergency_handler/emergency_handler_core.hpp"
-
-#include <rclcpp/rclcpp.hpp>
-
-#include <memory>
-
-int main(int argc, char ** argv)
-{
-  rclcpp::init(argc, argv);
-  rclcpp::executors::MultiThreadedExecutor executor;
-  auto node = std::make_shared<EmergencyHandler>();
-  executor.add_node(node);
-  executor.spin();
-  executor.remove_node(node);
-  rclcpp::shutdown();
-
-  return 0;
-}

From f9e579eae0e6b2f44c0f0db3797a3790e86bcc45 Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
 <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Wed, 15 May 2024 05:30:52 +0000
Subject: [PATCH 2/4] style(pre-commit): autofix

---
 .../src/emergency_handler/emergency_handler_core.cpp            | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp b/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
index 586318eb7c1ec..b93d5faca6e32 100644
--- a/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
+++ b/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
@@ -461,4 +461,4 @@ bool EmergencyHandler::isStopped()
 }
 
 #include <rclcpp_components/register_node_macro.hpp>
-RCLCPP_COMPONENTS_REGISTER_NODE(EmergencyHandler)
\ No newline at end of file
+RCLCPP_COMPONENTS_REGISTER_NODE(EmergencyHandler)

From fae3b6aa6eab8af30d38a38621deb76170a9f06c Mon Sep 17 00:00:00 2001
From: TetsuKawa <kawaguchitnon@icloud.com>
Date: Wed, 15 May 2024 16:41:17 +0900
Subject: [PATCH 3/4] feat: add an arg to the constructor

Signed-off-by: TetsuKawa <kawaguchitnon@icloud.com>
---
 .../include/emergency_handler/emergency_handler_core.hpp        | 2 +-
 .../src/emergency_handler/emergency_handler_core.cpp            | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/system/emergency_handler/include/emergency_handler/emergency_handler_core.hpp b/system/emergency_handler/include/emergency_handler/emergency_handler_core.hpp
index 5c76d96e573ab..a78b35be26daf 100644
--- a/system/emergency_handler/include/emergency_handler/emergency_handler_core.hpp
+++ b/system/emergency_handler/include/emergency_handler/emergency_handler_core.hpp
@@ -53,7 +53,7 @@ struct Param
 class EmergencyHandler : public rclcpp::Node
 {
 public:
-  EmergencyHandler();
+  explicit EmergencyHandler(const rclcpp::NodeOptions & options);
 
 private:
   // Subscribers
diff --git a/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp b/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
index 586318eb7c1ec..8e5c1e4e9fef7 100644
--- a/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
+++ b/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
@@ -18,7 +18,7 @@
 #include <string>
 #include <utility>
 
-EmergencyHandler::EmergencyHandler() : Node("emergency_handler")
+EmergencyHandler::EmergencyHandler(const rclcpp::NodeOptions & options) : Node("emergency_handler", options)
 {
   // Parameter
   param_.update_rate = declare_parameter<int>("update_rate");

From e7f77827420446cce396dc978cfa73815a8283be Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
 <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Wed, 15 May 2024 07:46:49 +0000
Subject: [PATCH 4/4] style(pre-commit): autofix

---
 .../src/emergency_handler/emergency_handler_core.cpp           | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp b/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
index 2e4057c0f918f..2770a14691d95 100644
--- a/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
+++ b/system/emergency_handler/src/emergency_handler/emergency_handler_core.cpp
@@ -18,7 +18,8 @@
 #include <string>
 #include <utility>
 
-EmergencyHandler::EmergencyHandler(const rclcpp::NodeOptions & options) : Node("emergency_handler", options)
+EmergencyHandler::EmergencyHandler(const rclcpp::NodeOptions & options)
+: Node("emergency_handler", options)
 {
   // Parameter
   param_.update_rate = declare_parameter<int>("update_rate");