Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Simplify mc_server
authorGabriel Corona <gabriel.corona@loria.fr>
Tue, 10 Nov 2015 13:58:02 +0000 (14:58 +0100)
committerGabriel Corona <gabriel.corona@loria.fr>
Tue, 10 Nov 2015 14:01:54 +0000 (15:01 +0100)
src/mc/mc_base.cpp
src/mc/mc_server.cpp
src/mc/mc_server.h

index ea5b647..3ca646c 100644 (file)
@@ -43,7 +43,7 @@ void MC_wait_for_requests(void)
 {
 #ifdef HAVE_MC
   if (mc_mode == MC_MODE_SERVER) {
-    MC_server_wait_client(&mc_model_checker->process());
+    mc_server->wait_client(mc_model_checker->process());
     return;
   }
 #endif
@@ -233,7 +233,8 @@ void MC_simcall_handle(smx_simcall_t req, int value)
 
   xbt_dynar_foreach_ptr(mc_model_checker->process().smx_process_infos, i, pi) {
     if (req == &pi->copy.simcall) {
-      MC_server_simcall_handle(&mc_model_checker->process(), pi->copy.pid, value);
+      mc_server->simcall_handle(
+        mc_model_checker->process(), pi->copy.pid, value);
       return;
     }
   }
index 9276907..db325d2 100644 (file)
@@ -117,12 +117,12 @@ void s_mc_server::exit()
   }
 }
 
-void s_mc_server::resume(simgrid::mc::Process* process)
+void s_mc_server::resume(simgrid::mc::Process& process)
 {
-  int res = process->send_message(MC_MESSAGE_CONTINUE);
+  int res = process.send_message(MC_MESSAGE_CONTINUE);
   if (res)
     throw std::system_error(res, std::system_category());
-  process->cache_flags = (mc_process_cache_flags_t) 0;
+  process.cache_flags = (mc_process_cache_flags_t) 0;
 }
 
 static
@@ -356,33 +356,28 @@ void s_mc_server::on_signal(const struct signalfd_siginfo* info)
   }
 }
 
-void MC_server_wait_client(simgrid::mc::Process* process)
+void s_mc_server::wait_client(simgrid::mc::Process& process)
 {
-  mc_server->resume(process);
+  this->resume(process);
   while (mc_model_checker->process().running()) {
     if (!mc_server->handle_events())
       return;
   }
 }
 
-void MC_server_simcall_handle(simgrid::mc::Process* process, unsigned long pid, int value)
+void s_mc_server::simcall_handle(simgrid::mc::Process& process, unsigned long pid, int value)
 {
   s_mc_simcall_handle_message m;
   memset(&m, 0, sizeof(m));
   m.type  = MC_MESSAGE_SIMCALL_HANDLE;
   m.pid   = pid;
   m.value = value;
-  mc_model_checker->process().send_message(m);
-  process->cache_flags = (mc_process_cache_flags_t) 0;
-  while (mc_model_checker->process().running()) {
+  process.send_message(m);
+  process.cache_flags = (mc_process_cache_flags_t) 0;
+  while (process.running()) {
     if (!mc_server->handle_events())
       return;
   }
 }
 
-void MC_server_loop(mc_server_t server)
-{
-  server->loop();
-}
-
 }
index 1358a2f..9daf0dd 100644 (file)
@@ -28,11 +28,6 @@ typedef struct s_mc_server s_mc_server_t, *mc_server_t;
 
 extern mc_server_t mc_server;
 
-XBT_PRIVATE void MC_server_wait_client(simgrid::mc::Process* process);
-XBT_PRIVATE void MC_server_simcall_handle(simgrid::mc::Process* process, unsigned long pid, int value);
-
-XBT_PRIVATE void MC_server_loop(mc_server_t server);
-
 SG_END_DECL()
 
 #ifdef __cplusplus
@@ -47,9 +42,11 @@ public:
   void start();
   void shutdown();
   void exit();
-  void resume(simgrid::mc::Process* process);
+  void resume(simgrid::mc::Process& process);
   void loop();
   bool handle_events();
+  void wait_client(simgrid::mc::Process& process);
+  void simcall_handle(simgrid::mc::Process& process, unsigned long pid, int value);
 private:
   bool handle_message(char* buffer, ssize_t size);
   void handle_signals();