}
ActorIDTrait::ActorIDTrait(std::string name, aid_t ppid) : name_(std::move(name)), pid_(maxpid++), ppid_(ppid) {}
-ActorImpl* ActorImpl::by_pid(aid_t pid)
-{
- return EngineImpl::get_instance()->get_actor_by_pid(pid);
-}
-
ActorImpl* ActorImpl::self()
{
const context::Context* self_context = context::Context::self();
ActorImpl& operator=(const ActorImpl&) = delete;
~ActorImpl();
- /** Retrieve the actor implementation from its PID (or nullptr if non-existent) */
- static ActorImpl* by_pid(aid_t pid);
-
static ActorImpl* self();
double get_kill_time() const;
void set_kill_time(double kill_time);
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "src/mc/mc_record.hpp"
+#include "src/kernel/EngineImpl.hpp"
#include "src/kernel/activity/CommImpl.hpp"
#include "src/mc/mc_base.hpp"
#include "src/mc/mc_replay.hpp"
XBT_DEBUG("Executing %ld$%i", transition->aid_, transition->times_considered_);
// Choose a request:
- kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_pid(transition->aid_);
+ kernel::actor::ActorImpl* actor = kernel::EngineImpl::get_instance()->get_actor_by_pid(transition->aid_);
xbt_assert(actor != nullptr, "Unexpected actor (id:%ld).", transition->aid_);
const kernel::actor::Simcall* simcall = &(actor->simcall_);
xbt_assert(simcall->call_ != kernel::actor::Simcall::Type::NONE, "No simcall for process %ld.", transition->aid_);
}
void AppSide::handle_simcall_execute(const s_mc_message_simcall_execute_t* message) const
{
- kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_pid(message->aid_);
+ kernel::actor::ActorImpl* actor = kernel::EngineImpl::get_instance()->get_actor_by_pid(message->aid_);
xbt_assert(actor != nullptr, "Invalid pid %ld", message->aid_);
// The client may send some messages to the server while processing the transition
void AppSide::handle_actor_enabled(const s_mc_message_actor_enabled_t* msg) const
{
- bool res = mc::actor_is_enabled(kernel::actor::ActorImpl::by_pid(msg->aid));
+ bool res = mc::actor_is_enabled(kernel::EngineImpl::get_instance()->get_actor_by_pid(msg->aid));
s_mc_message_int_t answer{MessageType::ACTOR_ENABLED_REPLY, res};
xbt_assert(channel_.send(answer) == 0, "Could not send ACTOR_ENABLED_REPLY");
}
ActorPtr Actor::by_pid(aid_t pid)
{
- kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_pid(pid);
+ kernel::actor::ActorImpl* actor = kernel::EngineImpl::get_instance()->get_actor_by_pid(pid);
if (actor != nullptr)
return actor->get_iface();
else
#include "simgrid/s4u/Engine.hpp"
#include "simgrid/s4u/Host.hpp"
#include "simgrid/version.h"
+#include "smpi_coll.hpp"
#include "smpi_comm.hpp"
#include "smpi_datatype_derived.hpp"
#include "smpi_status.hpp"
-#include "smpi_coll.hpp"
+#include "src/kernel/EngineImpl.hpp"
#include "src/kernel/actor/ActorImpl.hpp"
#include "src/smpi/include/smpi_actor.hpp"
XBT_WARN("MPI_Abort was called, something went probably wrong in this simulation ! Killing all processes sharing the same MPI_COMM_WORLD");
auto myself = simgrid::kernel::actor::ActorImpl::self();
for (int i = 0; i < comm->size(); i++){
- auto actor = simgrid::kernel::actor::ActorImpl::by_pid(comm->group()->actor(i));
+ auto actor = simgrid::kernel::EngineImpl::get_instance()->get_actor_by_pid(comm->group()->actor(i));
if (actor != nullptr && actor != myself)
simgrid::kernel::actor::simcall_answered([actor] { actor->exit(); });
}
#include "smpi_datatype.hpp"
#include "smpi_host.hpp"
#include "smpi_op.hpp"
+#include "src/kernel/EngineImpl.hpp"
#include "src/kernel/activity/CommImpl.hpp"
#include "src/kernel/actor/ActorImpl.hpp"
#include "src/kernel/actor/SimcallObserver.hpp"
size_t payload_size_ = size_ + 16;//MPI enveloppe size (tag+dest+communicator)
kernel::actor::CommIsendSimcall observer{
- simgrid::kernel::actor::ActorImpl::by_pid(src_), mailbox->get_impl(), static_cast<double>(payload_size_), -1,
- static_cast<unsigned char*>(buf), real_size_, &match_send,
+ simgrid::kernel::EngineImpl::get_instance()->get_actor_by_pid(src_), mailbox->get_impl(),
+ static_cast<double>(payload_size_), -1, static_cast<unsigned char*>(buf), real_size_, &match_send,
&xbt_free_f, // how to free the userdata if a detached send fails
process->replaying() ? &smpi_comm_null_copy_buffer_callback : smpi_comm_copy_data_callback, this,
// detach if msg size < eager/rdv switch limit