Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[s4u] Actor::forPid()
authorGabriel Corona <gabriel.corona@loria.fr>
Tue, 21 Jun 2016 15:03:02 +0000 (17:03 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Tue, 21 Jun 2016 15:03:02 +0000 (17:03 +0200)
include/simgrid/s4u/actor.hpp
src/s4u/s4u_actor.cpp

index e983372..7f8016f 100644 (file)
@@ -231,6 +231,7 @@ public:
   void kill();
 
   static void kill(int pid);
+  static Actor forPid(int pid);
   
   /**
    * Wait for the actor to finish.
@@ -242,6 +243,8 @@ public:
   /** Ask kindly to all actors to die. Only the issuer will survive. */
   static void killAll();
 
+  bool valid() const { return pimpl_ != nullptr; }
+
 private:
   smx_process_t pimpl_ = nullptr;
 };
index d5d5e99..5cec45a 100644 (file)
@@ -68,6 +68,13 @@ void s4u::Actor::kill() {
   simcall_process_kill(pimpl_);
 }
 
+simgrid::s4u::Actor s4u::Actor::forPid(int pid)
+{
+  // Should we throw if we did not find it?
+  smx_process_t process = SIMIX_process_from_PID(pid);
+  return simgrid::s4u::Actor(process);
+}
+
 // static stuff:
 
 void s4u::Actor::killAll() {