X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/593f7525c1fbd75ab6c4f105f9f340401464fe0b..60ce0b9f4a108a6a7b1d6c883511e21645a853c1:/src/kernel/context/Context.cpp diff --git a/src/kernel/context/Context.cpp b/src/kernel/context/Context.cpp index 06e540232a..e095919bf0 100644 --- a/src/kernel/context/Context.cpp +++ b/src/kernel/context/Context.cpp @@ -54,13 +54,13 @@ void Context::declare_context(std::size_t size) #endif } -Context* ContextFactory::attach(void_pfn_smxprocess_t cleanup_func, smx_actor_t process) +Context* ContextFactory::attach(void_pfn_smxprocess_t, smx_actor_t) { xbt_die("Cannot attach with this ContextFactory.\n" "Try using --cfg=contexts/factory:thread instead.\n"); } -Context* ContextFactory::create_maestro(std::function code, smx_actor_t process) +Context* ContextFactory::create_maestro(std::function, smx_actor_t) { xbt_die("Cannot create_maestro with this ContextFactory.\n" "Try using --cfg=contexts/factory:thread instead.\n"); @@ -101,6 +101,25 @@ void Context::stop() AttachContext::~AttachContext() = default; +StopRequest::~StopRequest() = default; + +void StopRequest::do_throw() +{ + throw StopRequest(); +} + +bool StopRequest::try_n_catch(std::function try_block) +{ + bool res; + try { + try_block(); + res = true; + } catch (StopRequest const&) { + XBT_DEBUG("Caught a StopRequest"); + res = false; + } + return res; +} }}} /** @brief Executes all the processes to run (in parallel if possible). */