19 class IModuleListener;
22 class ComponentContainer;
98 void NotifyStateChange();
101 mInitializeCallbacks.Push(callback);
106 mShutdownCallbacks.Push(callback);
109 virtual bool CheckShutdown();
110 virtual void CompleteShutdown();
115 template <
typename T>
116 void Invoke(std::function<
void(std::shared_ptr<T>)> callback)
118 mListeners.Invoke([callback](std::shared_ptr<IModuleListener> listener)
120 callback(std::static_pointer_cast<T>(listener));
virtual TTV_ErrorCode Update()=0
CallbackQueue< ShutdownCallback > mShutdownCallbacks
Definition: module.h:144
std::function< void(TTV_ErrorCode ec)> InitializeCallback
Definition: module.h:48
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
State mState
Definition: module.h:134
EventSource< IModuleListener > mListeners
Definition: module.h:133
std::shared_ptr< ComponentContainer > GetComponentContainer()
Definition: module.h:127
void RegisterInitializeCallback(const InitializeCallback &callback)
Definition: module.h:99
void ShutdownModulesSync(const std::vector< std::shared_ptr< ttv::IModule >> &modules)
Definition: eventsource.h:18
State
Definition: module.h:40
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
virtual std::string GetModuleName() const =0
std::function< void(TTV_ErrorCode ec)> ShutdownCallback
Definition: module.h:49
CallbackQueue< InitializeCallback > mInitializeCallbacks
Definition: module.h:143
State mLastReportedState
Definition: module.h:135
std::shared_ptr< ComponentContainer > mComponentContainer
Definition: module.h:141
virtual TTV_ErrorCode Initialize(const InitializeCallback &callback)=0
void RegisterShutdownCallback(const ShutdownCallback &callback)
Definition: module.h:104
virtual TTV_ErrorCode Shutdown(const ShutdownCallback &callback)=0
virtual State GetState() const =0
void Invoke(std::function< void(std::shared_ptr< T >)> callback)
Definition: module.h:116