- static void wrapper(arg_type arg);
- static void swap(BoostContext* from, BoostContext* to);
-
-#if HAVE_SANITIZE_ADDRESS_FIBER_SUPPORT
- const void* asan_stack_ = nullptr;
- size_t asan_stack_size_ = 0;
- bool asan_stop_ = false;
-#endif
-
- void* stack_ = nullptr;
-public:
- BoostContext(std::function<void()> code, void_pfn_smxprocess_t cleanup_func, smx_actor_t process);
- ~BoostContext() override;
- void stop() override;
- virtual void resume() = 0;
-
- friend BoostContextFactory;
-};
-
-class SerialBoostContext : public BoostContext {
-public:
- SerialBoostContext(std::function<void()> code, void_pfn_smxprocess_t cleanup_func, smx_actor_t process)
- : BoostContext(std::move(code), cleanup_func, process)
- {
- }
- void suspend() override;
- void resume() override;
-};