-XBT_PRIVATE ContextFactory* thread_factory();
-XBT_PRIVATE ContextFactory* sysv_factory();
-XBT_PRIVATE ContextFactory* raw_factory();
-XBT_PRIVATE ContextFactory* boost_factory();
-
-template<class R, class... Args> inline
-R simcall(e_smx_simcall_t call, Args&&... args)
-{
- smx_process_t self = SIMIX_process_self();
- marshal(&self->simcall, call, std::forward<Args>(args)...);
- simcall_call(self);
- return unmarshal<R>(self->simcall.result);
-}
-
+class Global {
+ kernel::context::ContextFactory* context_factory_ = nullptr;
+ kernel::actor::ActorImpl* maestro_ = nullptr;
+
+public:
+ bool is_maestro(const kernel::actor::ActorImpl* actor) const { return actor == maestro_; }
+ void set_maestro(kernel::actor::ActorImpl* actor) { maestro_ = actor; }
+ kernel::actor::ActorImpl* get_maestro() const { return maestro_; }
+ void destroy_maestro()
+ {
+ delete maestro_;
+ maestro_ = nullptr;
+ }
+
+ kernel::context::ContextFactory* get_context_factory() const { return context_factory_; }
+ void set_context_factory(kernel::context::ContextFactory* factory) { context_factory_ = factory; }
+ bool has_context_factory() const { return context_factory_ != nullptr; }
+ void destroy_context_factory()
+ {
+ delete context_factory_;
+ context_factory_ = nullptr;
+ }
+};