X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0a95c78251f3ecbf1dfcb3ebe7904e44acf1beef..a91ed4612675df3eb54e154f6525c3cc96a50b7f:/src/s4u/s4u_actor.cpp diff --git a/src/s4u/s4u_actor.cpp b/src/s4u/s4u_actor.cpp index 4d082c1e0b..257717fec6 100644 --- a/src/s4u/s4u_actor.cpp +++ b/src/s4u/s4u_actor.cpp @@ -25,23 +25,21 @@ ActorPtr Actor::self() if (self_context == nullptr) return simgrid::s4u::ActorPtr(); - return simgrid::s4u::ActorPtr(&self_context->process()->getIface()); + return self_context->process()->iface(); } ActorPtr Actor::createActor(const char* name, s4u::Host* host, std::function code) { - // TODO, when autorestart is used, the std::function is copied so the new - // instance will get a fresh (reinitialized) state. Is this what we want? - smx_actor_t process = simcall_process_create(name, std::move(code), nullptr, host, nullptr, 0); - return ActorPtr(&process->getIface()); + smx_actor_t actor = simcall_process_create(name, std::move(code), nullptr, host, nullptr); + return actor->iface(); } ActorPtr Actor::createActor(const char* name, s4u::Host* host, const char* function, std::vector args) { simgrid::simix::ActorCodeFactory& factory = SIMIX_get_actor_code_factory(function); simgrid::simix::ActorCode code = factory(std::move(args)); - smx_actor_t process = simcall_process_create(name, std::move(code), nullptr, host, nullptr, 0); - return ActorPtr(&process->getIface()); + smx_actor_t actor = simcall_process_create(name, std::move(code), nullptr, host, nullptr); + return actor->iface(); } // ***** Actor methods ***** @@ -108,9 +106,9 @@ ActorPtr Actor::byPid(int pid) { smx_actor_t process = SIMIX_process_from_PID(pid); if (process != nullptr) - return ActorPtr(&process->getIface()); + return process->iface(); else - return nullptr; + return ActorPtr(); } void Actor::killAll() { @@ -165,6 +163,10 @@ int ppid() return SIMIX_process_self()->ppid; } +std::string name() +{ + return SIMIX_process_self()->name; +} } } }