diff options
author | Attila Molnar <attilamolnar@hush.com> | 2015-12-05 15:58:48 +0100 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2015-12-05 15:58:48 +0100 |
commit | 302053cf8f5378da7f23e5d2f68a24c9d2325351 (patch) | |
tree | 53c1268ef70d943e26bb237f9dba9c8b45519414 /include/modules | |
parent | 912fd7a922beaeecdf602fa9d70964aee2a6bb63 (diff) |
m_cap Provide the OnCapValueChange event and add Cap::Manager::NotifyValueChange()
Diffstat (limited to 'include/modules')
-rw-r--r-- | include/modules/cap.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/modules/cap.h b/include/modules/cap.h index e05263ad3..6f91f5aee 100644 --- a/include/modules/cap.h +++ b/include/modules/cap.h @@ -55,6 +55,11 @@ namespace Cap * @param add If true, the capability is being added, otherwise its being removed */ virtual void OnCapAddDel(Capability* cap, bool add) = 0; + + /** Called whenever the value of a cap changes. + * @param cap Capability whose value changed + */ + virtual void OnCapValueChange(Capability* cap) { } }; class Manager : public DataProvider @@ -82,6 +87,11 @@ namespace Cap * @return Capability object pointer if found, NULL otherwise */ virtual Capability* Find(const std::string& name) const = 0; + + /** Notify manager when a value of a cap changed + * @param cap Cap whose value changed + */ + virtual void NotifyValueChange(Capability* cap) = 0; }; /** Represents a client capability. @@ -135,6 +145,16 @@ namespace Cap friend class ManagerImpl; + protected: + /** Notify the manager that the value of the capability changed. + * Must be called if the value of the cap changes for any reason. + */ + void NotifyValueChange() + { + if (IsRegistered()) + manager->NotifyValueChange(this); + } + public: /** Constructor, initializes the capability. * Caps are active by default. |