X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/17c819afc4ceda4000eec137c8fee35168253b4d..2b4f2809ce5c54961bcae43131fcab00dd161a3d:/src/kernel/context/Context.hpp diff --git a/src/kernel/context/Context.hpp b/src/kernel/context/Context.hpp index 443aa52644..082677c08c 100644 --- a/src/kernel/context/Context.hpp +++ b/src/kernel/context/Context.hpp @@ -6,7 +6,6 @@ #ifndef SIMGRID_KERNEL_CONTEXT_CONTEXT_HPP #define SIMGRID_KERNEL_CONTEXT_CONTEXT_HPP -#include "instr/instr_interface.h" #include "src/internal_config.h" #include "src/simix/smx_network_private.hpp" @@ -59,13 +58,22 @@ public: class StopRequest { /** @brief Exception launched to kill a process, in order to properly unwind its stack and release RAII stuff * - * Nope, Sonar, this should not inherit of std::exception. + * Nope, Sonar, this should not inherit of std::exception nor of simgrid::Exception. * Otherwise, users may accidentally catch it with a try {} catch (std::exception) */ + public: + StopRequest() = default; + explicit StopRequest(std::string msg) : msg_(msg) {} + + private: + std::string msg_; }; bool iwannadie; Context(std::function code, void_pfn_smxprocess_t cleanup_func, smx_actor_t process); + Context(const Context&) = delete; + Context& operator=(const Context&) = delete; + void operator()() { code_(); } bool has_code() const { return static_cast(code_); } smx_actor_t process() { return this->process_; } @@ -108,8 +116,6 @@ XBT_PRIVATE ContextFactory* boost_factory(); typedef simgrid::kernel::context::ContextFactory *smx_context_factory_t; -extern "C" { - XBT_PRIVATE void SIMIX_context_mod_init(); XBT_PRIVATE void SIMIX_context_mod_exit(); @@ -144,8 +150,7 @@ XBT_PRIVATE smx_context_t SIMIX_context_get_current(); XBT_PUBLIC int SIMIX_process_get_maxpid(); XBT_PRIVATE void SIMIX_post_create_environment(); -} -XBT_PRIVATE simgrid::simix::ActorCodeFactory& SIMIX_get_actor_code_factory(const char *name); +XBT_PRIVATE simgrid::simix::ActorCodeFactory& SIMIX_get_actor_code_factory(std::string name); #endif