#include "ModelChecker.hpp"
#include "mc_protocol.h"
-#include "mc_server.h"
+#include "src/mc/Server.hpp"
#include "mc_private.h"
#include "mc_ignore.h"
#include "mcer_ignore.h"
extern "C" {
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_server, mc, "MC server logic");
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_Server, mc, "MC server logic");
+
+}
// HArdcoded index for now:
#define SOCKET_FD_INDEX 0
#define SIGNAL_FD_INDEX 1
-mc_server_t mc_server;
+namespace simgrid {
+namespace mc {
-s_mc_server::s_mc_server(pid_t pid_, int socket_)
+Server* server = nullptr;
+
+Server::Server(pid_t pid_, int socket_)
: pid(pid_), socket(socket_) {}
-void s_mc_server::start()
+void Server::start()
{
// Block SIGCHLD (this will be handled with accept/signalfd):
sigset_t set;
ptrace(PTRACE_CONT, pid, 0, 0);
}
-void s_mc_server::shutdown()
+void Server::shutdown()
{
XBT_DEBUG("Shuting down model-checker");
}
}
-void s_mc_server::exit()
+void Server::exit()
{
// Finished:
int status = mc_model_checker->process().status();
}
}
-void s_mc_server::resume(simgrid::mc::Process& process)
+void Server::resume(simgrid::mc::Process& process)
{
int res = process.send_message(MC_MESSAGE_CONTINUE);
if (res)
throw std::system_error(error, std::system_category());
}
-bool s_mc_server::handle_message(char* buffer, ssize_t size)
+bool Server::handle_message(char* buffer, ssize_t size)
{
s_mc_message_t base_message;
if (size < (ssize_t) sizeof(base_message))
return true;
}
-bool s_mc_server::handle_events()
+bool Server::handle_events()
{
char buffer[MC_MESSAGE_LENGTH];
struct pollfd* socket_pollfd = &fds[SOCKET_FD_INDEX];
return true;
}
-void s_mc_server::loop()
+void Server::loop()
{
while (mc_model_checker->process().running())
this->handle_events();
}
-void s_mc_server::handle_signals()
+void Server::handle_signals()
{
struct signalfd_siginfo info;
struct pollfd* signalfd_pollfd = &fds[SIGNAL_FD_INDEX];
this->on_signal(&info);
}
-void s_mc_server::handle_waitpid()
+void Server::handle_waitpid()
{
XBT_DEBUG("Check for wait event");
int status;
}
}
-void s_mc_server::on_signal(const struct signalfd_siginfo* info)
+void Server::on_signal(const struct signalfd_siginfo* info)
{
switch(info->ssi_signo) {
case SIGCHLD:
}
}
-void s_mc_server::wait_client(simgrid::mc::Process& process)
+void Server::wait_client(simgrid::mc::Process& process)
{
this->resume(process);
while (mc_model_checker->process().running()) {
- if (!mc_server->handle_events())
+ if (!simgrid::mc::server->handle_events())
return;
}
}
-void s_mc_server::simcall_handle(simgrid::mc::Process& process, unsigned long pid, int value)
+void Server::simcall_handle(simgrid::mc::Process& process, unsigned long pid, int value)
{
s_mc_simcall_handle_message m;
memset(&m, 0, sizeof(m));
process.send_message(m);
process.cache_flags = (mc_process_cache_flags_t) 0;
while (process.running()) {
- if (!mc_server->handle_events())
+ if (!simgrid::mc::server->handle_events())
return;
}
}
}
+}