#include "src/mc/remote/AppSide.hpp"
#include "src/internal_config.h"
#include "src/kernel/actor/ActorImpl.hpp"
-#include "src/mc/checker/SimcallInspector.hpp"
+#include "src/mc/checker/SimcallObserver.hpp"
+#include "src/mc/remote/RemoteProcess.hpp"
#include <simgrid/modelchecker.h>
#include <cerrno>
#include <sys/socket.h>
#include <sys/types.h>
-// We won't need those once the separation MCer/MCed is complete:
-#include "src/mc/mc_smx.hpp"
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_client, mc, "MC client logic");
namespace simgrid {
case MessageType::SIMCALL_IS_VISIBLE: {
assert_msg_size("SIMCALL_IS_VISIBLE", s_mc_message_simcall_is_visible_t);
auto msg_simcall = (s_mc_message_simcall_is_visible_t*)message_buffer.data();
- kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_PID(msg_simcall->aid);
+ const kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_PID(msg_simcall->aid);
xbt_assert(actor != nullptr, "Invalid pid %d", msg_simcall->aid);
- xbt_assert(actor->simcall_.inspector_, "The transition of %s has no inspector", actor->get_cname());
- bool value = actor->simcall_.inspector_->is_visible();
+ xbt_assert(actor->simcall_.observer_, "The transition of %s has no observer", actor->get_cname());
+ bool value = actor->simcall_.observer_->is_visible();
// Send result:
s_mc_message_simcall_is_visible_answer_t answer{MessageType::SIMCALL_IS_VISIBLE_ANSWER, value};
case MessageType::SIMCALL_TO_STRING: {
assert_msg_size("SIMCALL_TO_STRING", s_mc_message_simcall_to_string_t);
auto msg_simcall = (s_mc_message_simcall_to_string_t*)message_buffer.data();
- kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_PID(msg_simcall->aid);
+ const kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_PID(msg_simcall->aid);
xbt_assert(actor != nullptr, "Invalid pid %d", msg_simcall->aid);
- // xbt_assert(actor->simcall_.inspector_, "The transition of %s has no inspector", actor->get_cname());
- std::string value;
- if (actor->simcall_.inspector_ == nullptr)
- value = "no inspector, no string. Please report that bug.";
- else
- value = actor->simcall_.inspector_->to_string(msg_simcall->time_considered);
+ xbt_assert(actor->simcall_.observer_, "The transition of %s has no observer", actor->get_cname());
+ std::string value = actor->simcall_.observer_->to_string(msg_simcall->time_considered);
// Send result:
s_mc_message_simcall_to_string_answer_t answer{MessageType::SIMCALL_TO_STRING_ANSWER, {0}};
- strcat(answer.value, value.c_str());
+ value.copy(answer.value, (sizeof answer.value) - 1); // last byte was set to '\0' by initialization above
xbt_assert(channel_.send(answer) == 0, "Could not send response");
break;
}
case MessageType::SIMCALL_DOT_LABEL: {
assert_msg_size("SIMCALL_DOT_LABEL", s_mc_message_simcall_to_string_t);
auto msg_simcall = (s_mc_message_simcall_to_string_t*)message_buffer.data();
- kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_PID(msg_simcall->aid);
+ const kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_PID(msg_simcall->aid);
xbt_assert(actor != nullptr, "Invalid pid %d", msg_simcall->aid);
- xbt_assert(actor->simcall_.inspector_, "The transition of %s has no inspector", actor->get_cname());
- std::string value = actor->simcall_.inspector_->dot_label();
+ xbt_assert(actor->simcall_.observer_, "The transition of %s has no observer", actor->get_cname());
+ std::string value = actor->simcall_.observer_->dot_label();
// Send result:
s_mc_message_simcall_to_string_answer_t answer{MessageType::SIMCALL_TO_STRING_ANSWER, {0}};
- strcat(answer.value, value.c_str());
+ value.copy(answer.value, (sizeof answer.value) - 1); // last byte was set to '\0' by initialization above
xbt_assert(channel_.send(answer) == 0, "Could not send response");
break;
}