#ifndef _MARIONETTE_H #define _MARIONETTE_H #include #include #include #include namespace smo { class MarionetteThread; namespace mrntt { class MarionetteComponent : public Component { public: MarionetteComponent(const std::shared_ptr &thread); ~MarionetteComponent() = default; public: typedef std::function mrnttLifetimeMgmtOpCbFn; void initializeReq(Callback callback); void finalizeReq(Callback callback); void intrinEventInd(void); void negtrinEventInd(void); void postrinEventInd(void); private: class MrnttLifetimeMgmtOp; }; extern std::atomic exitCode; void exitMarionetteLoop(); void marionetteFinalizeReqCb(bool success); extern mrntt::MarionetteComponent mrntt; } // namespace mrntt struct CrtCommandLineArgs { CrtCommandLineArgs(int argc, char *argv[], char *envp[]) : argc(argc), argv(argv), envp(envp) {} int argc; char **argv; char **envp; static void set(int argc, char *argv[], char *envp[]); }; } // namespace smo #endif // _MARIONETTE_H