From 5e7b8344f53c9f008d60ebc40d2d9facda13cafc Mon Sep 17 00:00:00 2001 From: Siddharth Kucheria Date: Thu, 18 Jul 2019 11:59:19 -0700 Subject: [PATCH] assuming only one library passed in at a time Signed-off-by: Siddharth Kucheria --- rclcpp_components/src/node_main.cpp.in | 39 ++++++++++---------------- 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/rclcpp_components/src/node_main.cpp.in b/rclcpp_components/src/node_main.cpp.in index f549ed6b7c..d395b87d7a 100644 --- a/rclcpp_components/src/node_main.cpp.in +++ b/rclcpp_components/src/node_main.cpp.in @@ -99,10 +99,6 @@ int main(int argc, char * argv[]) // Force flush of the stdout buffer. setvbuf(stdout, NULL, _IONBF, BUFSIZ); - // if (argc < 2) { - // fprintf(stderr, "Requires at least one argument to be passed with the library to load\n"); - // return 1; - // } rclcpp::init(argc, argv); rclcpp::Logger logger = rclcpp::get_logger(NODE_MAIN_LOGGER_NAME); rclcpp::executors::SingleThreadedExecutor exec; @@ -110,30 +106,25 @@ int main(int argc, char * argv[]) std::vector loaders; std::vector node_wrappers; - std::vector libraries; - // for (int i = 1; i < argc; ++i) { - // libraries.push_back(argv[i]); - // } std::string libraryName = "@LIBRARY_NAME@"; - libraries.push_back(libraryName); std::string className = "rclcpp_components::NodeFactoryTemplate<@CLASS_NAME@>"; - for (auto library : libraries) { - RCLCPP_INFO(logger, "Load library %s", library.c_str()); - auto loader = new class_loader::ClassLoader(library); - auto classes = loader->getAvailableClasses(); - for (auto clazz : classes) { - std::string name = clazz.c_str(); - if (!(name.compare(className))) { - RCLCPP_INFO(logger, "Instantiate class %s", clazz.c_str()); - auto node_factory = loader->createInstance(clazz); - auto wrapper = node_factory->create_node_instance(options); - auto node = wrapper.get_node_base_interface(); - node_wrappers.push_back(wrapper); - exec.add_node(node); - } + + RCLCPP_INFO(logger, "Load library %s", libraryName.c_str()); + auto loader = new class_loader::ClassLoader(libraryName); + auto classes = loader->getAvailableClasses(); + for (auto clazz : classes) { + std::string name = clazz.c_str(); + if (!(name.compare(className))) { + RCLCPP_INFO(logger, "Instantiate class %s", clazz.c_str()); + auto node_factory = loader->createInstance(clazz); + auto wrapper = node_factory->create_node_instance(options); + auto node = wrapper.get_node_base_interface(); + node_wrappers.push_back(wrapper); + exec.add_node(node); } - loaders.push_back(loader); } + loaders.push_back(loader); + exec.spin();