Module: sems
Branch: master
Commit: ab7d80d69be77a82895890c3ca49d8c9d2702a05
URL: 
https://github.com/sems-server/sems/commit/ab7d80d69be77a82895890c3ca49d8c9d2702a05

Author: Raphael Coeffic <[email protected]>
Committer: Stefan Sayer <[email protected]>
Date: 2015-06-08T22:07:50+02:00

xmlrpc2di: wait until XMLRPC server is started before returning from onLoad()

Conflicts:

        apps/xmlrpc2di/XMLRPC2DI.h

---

Modified: apps/xmlrpc2di/XMLRPC2DI.cpp
Modified: apps/xmlrpc2di/XMLRPC2DI.h

---

Diff:  
https://github.com/sems-server/sems/commit/ab7d80d69be77a82895890c3ca49d8c9d2702a05.diff
Patch: 
https://github.com/sems-server/sems/commit/ab7d80d69be77a82895890c3ca49d8c9d2702a05.patch

---

diff --git a/apps/xmlrpc2di/XMLRPC2DI.cpp b/apps/xmlrpc2di/XMLRPC2DI.cpp
index 22a2627..7d39698 100644
--- a/apps/xmlrpc2di/XMLRPC2DI.cpp
+++ b/apps/xmlrpc2di/XMLRPC2DI.cpp
@@ -72,7 +72,6 @@ int XMLRPC2DI::load() {
   if (configured)    // load only once
     return 0;
   configured = true;
-
   
   AmConfigReader cfg;
   if(cfg.loadFile(AmConfig::ModConfigPath + string(MOD_NAME ".conf")))
@@ -105,7 +104,6 @@ int XMLRPC2DI::load() {
   ServerRetryAfter = cfg.getParameterInt("server_retry_after", 10);
   DBG("retrying failed server after %u seconds\n", ServerRetryAfter);
 
-  
   string server_timeout = cfg.getParameter("server_timeout");
   if (!server_timeout.empty()) {
     unsigned int server_timeout_i = 0;
@@ -167,6 +165,8 @@ int XMLRPC2DI::load() {
   }
 
   server->start();
+  server->waitUntilStarted();
+
   return 0;
 }
 
@@ -337,7 +337,7 @@ XMLRPC2DIServer::XMLRPC2DIServer(unsigned int port,
   : AmEventQueue(this),
     port(port),
     bind_ip(bind_ip),
-    s(s),
+    s(s), running(false),
     // register method 'calls'
     calls_method(s),
     // register method 'set_loglevel'
@@ -354,8 +354,6 @@ XMLRPC2DIServer::XMLRPC2DIServer(unsigned int port,
     getcpsmax_method(s),
     getcpslimit_method(s),
     setcpslimit_method(s)
-
-
 {      
   INFO("XMLRPC Server: enabled builtin method 'calls'\n");
   INFO("XMLRPC Server: enabled builtin method 'get_loglevel'\n");
diff --git a/apps/xmlrpc2di/XMLRPC2DI.h b/apps/xmlrpc2di/XMLRPC2DI.h
index af808dc..1497712 100644
--- a/apps/xmlrpc2di/XMLRPC2DI.h
+++ b/apps/xmlrpc2di/XMLRPC2DI.h
@@ -105,7 +105,7 @@ class XMLRPC2DIServer
   unsigned int port; 
   string bind_ip;
 
-  AmSharedVar<bool> running;
+  AmCondition<bool> running;
 
   XMLRPC2DIServerCallsMethod       calls_method;
   XMLRPC2DIServerSetLoglevelMethod setloglevel_method;
@@ -137,8 +137,12 @@ class XMLRPC2DIServer
 
   void run();
   void on_stop();
+
+  void waitUntilStarted() { running.wait_for(); }
   
-  static void xmlrpcval2amargarray(XmlRpcValue& v, AmArg& a, unsigned int 
start_index);
+  static void xmlrpcval2amargarray(XmlRpcValue& v, AmArg& a, 
+                                  unsigned int start_index);
+
   static void xmlrpcval2amarg(XmlRpcValue& v, AmArg& a);
 
   /** convert all args in a into result*/

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to