X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/16f1630ae434e729cbe0b24fe2f19c8f67f774cd..98236eba13100727f2421d07b097cf84416ef74e:/src/kernel/actor/ActorImpl.cpp diff --git a/src/kernel/actor/ActorImpl.cpp b/src/kernel/actor/ActorImpl.cpp index 6cea03b393..28fcc0f4ed 100644 --- a/src/kernel/actor/ActorImpl.cpp +++ b/src/kernel/actor/ActorImpl.cpp @@ -32,9 +32,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_process, simix, "Logging specific to SIMIX */ smx_actor_t SIMIX_process_self() { - simgrid::kernel::context::Context* self_context = simgrid::kernel::context::Context::self(); - - return (self_context != nullptr) ? self_context->get_actor() : nullptr; + return simgrid::kernel::actor::ActorImpl::self(); } namespace simgrid { @@ -47,6 +45,13 @@ int get_maxpid() return maxpid; } +ActorImpl* ActorImpl::self() +{ + context::Context* self_context = context::Context::self(); + + return (self_context != nullptr) ? self_context->get_actor() : nullptr; +} + ActorImpl::ActorImpl(simgrid::xbt::string name, s4u::Host* host) : host_(host), name_(std::move(name)), piface_(this) { pid_ = maxpid++; @@ -196,7 +201,7 @@ void ActorImpl::exit() /* destroy the blocking synchro if any */ if (waiting_synchro != nullptr) { waiting_synchro->cancel(); - waiting_synchro->state_ = SIMIX_FAILED; + waiting_synchro->state_ = activity::State::FAILED; activity::ExecImplPtr exec = boost::dynamic_pointer_cast(waiting_synchro); activity::CommImplPtr comm = boost::dynamic_pointer_cast(waiting_synchro); @@ -389,7 +394,7 @@ void ActorImpl::resume() activity::ActivityImplPtr ActorImpl::join(ActorImpl* actor, double timeout) { activity::ActivityImplPtr sleep = this->sleep(timeout); - SIMIX_process_on_exit(actor, [sleep](bool) { + actor->on_exit->emplace_back([sleep](bool) { if (sleep->surf_action_) sleep->surf_action_->finish(resource::Action::State::FINISHED); }); @@ -496,7 +501,7 @@ ActorImplPtr ActorImpl::create(const std::string& name, const simix::ActorCode& if (parent_actor != nullptr) actor = parent_actor->init(xbt::string(name), host); else - actor = SIMIX_process_self()->init(xbt::string(name), host); + actor = self()->init(xbt::string(name), host); /* actor data */ actor->set_user_data(data); @@ -537,7 +542,7 @@ int SIMIX_process_count() // XBT_ATTRIB_DEPRECATED_v329 // XBT_DEPRECATED_v329 void* SIMIX_process_self_get_data() { - smx_actor_t self = SIMIX_process_self(); + smx_actor_t self = simgrid::kernel::actor::ActorImpl::self(); if (self == nullptr) { return nullptr; @@ -548,14 +553,14 @@ void* SIMIX_process_self_get_data() // XBT_DEPRECATED_v329 void SIMIX_process_self_set_data(void* data) { - SIMIX_process_self()->set_user_data(data); + simgrid::kernel::actor::ActorImpl::self()->set_user_data(data); } /* needs to be public and without simcall because it is called by exceptions and logging events */ const char* SIMIX_process_self_get_name() { - return SIMIX_is_maestro() ? "maestro" : SIMIX_process_self()->get_cname(); + return SIMIX_is_maestro() ? "maestro" : simgrid::kernel::actor::ActorImpl::self()->get_cname(); } /** @@ -579,7 +584,8 @@ smx_actor_t SIMIX_process_from_PID(aid_t PID) return item->second; } -void SIMIX_process_on_exit(smx_actor_t actor, const std::function& fun) +void SIMIX_process_on_exit(smx_actor_t actor, + const std::function& fun) // XBT_ATTRIB_DEPRECATED_v329 { xbt_assert(actor, "current process not found: are you in maestro context ?"); actor->on_exit->emplace_back(fun); @@ -603,7 +609,7 @@ void SIMIX_process_on_exit(smx_actor_t actor, const std::function* properties) { - smx_actor_t self = SIMIX_process_self(); + smx_actor_t self = simgrid::kernel::actor::ActorImpl::self(); return simgrid::kernel::actor::simcall([&name, &code, data, host, properties, self] { return simgrid::kernel::actor::ActorImpl::create(name, code, data, host, properties, self).get(); });