From 924c30135eef1cbda05f367b110b7af20de92c63 Mon Sep 17 00:00:00 2001
From: Joseph Mirabel <jmirabel@laas.fr>
Date: Tue, 25 Sep 2018 16:33:36 +0200
Subject: [PATCH] Remove useless thread to start and stop dynamic graph

---
 .../dynamic_graph_bridge/sot_loader_basic.hh  |  7 ++++-
 src/sot_loader_basic.cpp                      | 29 ++++++-------------
 2 files changed, 15 insertions(+), 21 deletions(-)

diff --git a/include/dynamic_graph_bridge/sot_loader_basic.hh b/include/dynamic_graph_bridge/sot_loader_basic.hh
index b561d48..11cc15d 100644
--- a/include/dynamic_graph_bridge/sot_loader_basic.hh
+++ b/include/dynamic_graph_bridge/sot_loader_basic.hh
@@ -73,6 +73,12 @@ protected:
   /// \brief Coefficient between parallel joints and the state vector.
   std::vector<double> coefficient_parallel_joints_;
 
+  /// Advertises start_dynamic_graph services
+  ros::ServiceServer service_start_;
+
+  /// Advertises stop_dynamic_graph services
+  ros::ServiceServer service_stop_;
+
   // Joint state publication.
   ros::Publisher joint_pub_;
   
@@ -83,7 +89,6 @@ protected:
   int nbOfJoints_;
   parallel_joints_to_state_vector_t::size_type nbOfParallelJoints_;
 
-
 public:
   SotLoaderBasic();
   ~SotLoaderBasic() {};
diff --git a/src/sot_loader_basic.cpp b/src/sot_loader_basic.cpp
index 4193a9b..e30b940 100644
--- a/src/sot_loader_basic.cpp
+++ b/src/sot_loader_basic.cpp
@@ -35,24 +35,6 @@ using namespace std;
 using namespace dynamicgraph::sot; 
 namespace po = boost::program_options;
 
-void createRosSpin(SotLoaderBasic *aSotLoaderBasic)
-{
-  ROS_INFO("createRosSpin started\n");
-  ros::NodeHandle n;
-
-  ros::ServiceServer service = n.advertiseService("start_dynamic_graph",
-                                                  &SotLoaderBasic::start_dg,
-                                                  aSotLoaderBasic);
-
-  ros::ServiceServer service2 = n.advertiseService("stop_dynamic_graph",
-                                                  &SotLoaderBasic::stop_dg,
-                                                  aSotLoaderBasic);
-
-
-  ros::waitForShutdown();
-}
-
-
 SotLoaderBasic::SotLoaderBasic():
   dynamic_graph_stopped_(true),
   sotRobotControllerLibrary_(0)
@@ -76,8 +58,15 @@ int SotLoaderBasic::initPublication()
 void SotLoaderBasic::initializeRosNode(int , char *[])
 {
   ROS_INFO("Ready to start dynamic graph.");
-  boost::unique_lock<boost::mutex> lock(mut);
-  boost::thread thr2(createRosSpin,this);
+  ros::NodeHandle n;
+
+  service_start_ = n.advertiseService("start_dynamic_graph",
+                                     &SotLoaderBasic::start_dg,
+                                     this);
+
+  service_stop_  = n.advertiseService("stop_dynamic_graph",
+                                     &SotLoaderBasic::stop_dg,
+                                     this);
 
 }   
 
-- 
GitLab