X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/63c371bbca5afccc4708761d83af6fc2443ca553..bd031688c75b0120d21a705ae3ee325ca0718530:/src/mc/remote/Client.hpp diff --git a/src/mc/remote/Client.hpp b/src/mc/remote/Client.hpp index ead07fe129..ddbdb979bc 100644 --- a/src/mc/remote/Client.hpp +++ b/src/mc/remote/Client.hpp @@ -1,5 +1,4 @@ -/* Copyright (c) 2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2015-2019. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -7,18 +6,10 @@ #ifndef SIMGRID_MC_CLIENT_H #define SIMGRID_MC_CLIENT_H -#include "src/internal_config.h" +#include "src/mc/remote/Channel.hpp" -#include #include -#include - -#include - -#include "src/mc/remote/Channel.hpp" -#include "src/mc/remote/mc_protocol.h" - namespace simgrid { namespace mc { @@ -26,20 +17,28 @@ namespace mc { * * Send messages to the model-checker and handles message from it. */ -class XBT_PUBLIC() Client { +class XBT_PUBLIC Client { private: - bool active_ = false; Channel channel_; - static std::unique_ptr client_; + static std::unique_ptr instance_; public: Client(); - explicit Client(int fd) : active_(true), channel_(fd) {} + explicit Client(int fd) : channel_(fd) {} void handleMessages(); + +private: + void handleDeadlockCheck(s_mc_message_t* msg); + void handleContinue(s_mc_message_t* msg); + void handleSimcall(s_mc_message_simcall_handle_t* message); + void handleRestore(s_mc_message_restore_t* msg); + void handleActorEnabled(s_mc_message_actor_enabled_t* msg); + +public: Channel const& getChannel() const { return channel_; } Channel& getChannel() { return channel_; } - void mainLoop(); - void reportAssertionFailure(const char* description = nullptr); + XBT_ATTRIB_NORETURN void mainLoop(); + void reportAssertionFailure(); void ignoreMemory(void* addr, std::size_t size); void ignoreHeap(void* addr, std::size_t size); void unignoreHeap(void* addr, std::size_t size); @@ -51,17 +50,9 @@ public: // Singleton :/ // TODO, remove the singleton antipattern. static Client* initialize(); - static Client* get() { return client_.get(); } + static Client* get() { return instance_.get(); } }; } } -SG_BEGIN_DECL() - -#if HAVE_MC -void MC_ignore(void* addr, std::size_t size); -#endif - -SG_END_DECL() - #endif