#ifndef COMPONENT_H #define COMPONENT_H #include #include #include namespace smo { class Mind; class ComponentThread; class Component { public: Component(const std::shared_ptr &thread); ~Component() = default; public: std::shared_ptr thread; public: }; class MindComponent : public Component { public: MindComponent(Mind &parent, const std::shared_ptr &thread); ~MindComponent() = default; public: Mind &parent; }; namespace mrntt { class MarionetteComponent : public Component { public: MarionetteComponent(const std::shared_ptr &thread); ~MarionetteComponent() = default; public: typedef std::function mrnttLifetimeMgmtOpCbFn; void initializeReq(mrnttLifetimeMgmtOpCbFn callback); void finalizeReq(mrnttLifetimeMgmtOpCbFn callback); private: class MrnttLifetimeMgmtOp; }; } // namespace mrntt } // namespace smo #endif // COMPONENT_H