xbt_assert(mc_model_checker == nullptr, "Did you manage to start the MC twice in this process?");
- checker_side_ = std::make_unique<simgrid::mc::CheckerSide>(sockets[1]);
auto memory = std::make_unique<simgrid::mc::RemoteProcessMemory>(pid);
model_checker_ = std::make_unique<simgrid::mc::ModelChecker>(std::move(memory));
mc_model_checker = model_checker_.get();
+ checker_side_ = std::make_unique<simgrid::mc::CheckerSide>(sockets[1], model_checker_.get());
start();
}
void RemoteApp::start()
{
- checker_side_->start(model_checker_.get());
-
XBT_DEBUG("Waiting for the model-checked process");
int status;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_checkerside, mc, "MC communication with the application");
namespace simgrid::mc {
-
-void CheckerSide::start(ModelChecker* mc)
+CheckerSide::CheckerSide(int sockfd, ModelChecker* mc) : channel_(sockfd)
{
auto* base = event_base_new();
base_.reset(base);
Channel channel_;
public:
- explicit CheckerSide(int sockfd) : channel_(sockfd) {}
+ explicit CheckerSide(int sockfd, ModelChecker* mc);
// No copy:
CheckerSide(CheckerSide const&) = delete;
Channel const& get_channel() const { return channel_; }
Channel& get_channel() { return channel_; }
- void start(ModelChecker* mc);
void dispatch() const;
void break_loop() const;
};