19#ifndef RTC_CONFIGADMIN_H
20#define RTC_CONFIGADMIN_H
22#include <coil/Properties.h>
23#include <coil/stringutil.h>
268 virtual bool update(
const char* val) = 0;
350 template <
typename VarType,
351 typename TransFunc = bool (*)(VarType&,
const char*)>
381 Config(
const char* conf_name, VarType& var,
const char* def_val,
382 TransFunc trans = coil::stringTo)
383 :
ConfigBase(conf_name, def_val), m_var(var), m_trans(trans)
429 if (string_value == val) {
return true; }
432 if ((*m_trans)(m_var, val))
434 notifyUpdate(name, val);
437 (*m_trans)(m_var, default_value);
438 notifyUpdate(name, val);
692 template <
typename VarType>
695 bool (*trans)(VarType&,
const char*) = coil::stringTo)
697 if (param_name ==
nullptr) {
return false; }
698 if (def_val ==
nullptr) {
return false; }
699 if (isExist(param_name)) {
return false; }
700 if (!trans(var, def_val)) {
return false; }
702 m_params.emplace_back(c);
704 update(getActiveId(), param_name);
836 void update(
const char* config_set,
const char* config_param);
956 return (m_configsets.hasKey(config_id) ==
nullptr) ? false :
true;
1252 bool autoclean =
true);
1314 bool autoclean =
true);
1378 bool autoclean =
true);
1546 explicit find_conf(
const char* name) : m_name(name) {}
1549 if (conf ==
nullptr) {
return false; }
1550 return (m_name == conf->
name);
1554 coil::Properties& m_configsets;
1555 coil::Properties m_emptyconf;
1556 std::vector<ConfigBase*> m_params;
1557 std::string m_activeId;
1560 coil::vstring m_changedParam;
1561 coil::vstring m_newConfig;
1562 ConfigurationListeners m_listeners;
Configuration related event listener classes.
ConfigAdmin class.
Definition ConfigAdmin.h:612
bool addConfigurationSet(const coil::Properties &config_set)
Add the configuration value to configuration set.
bool isChanged()
Confirm to change configuration parameters.
Definition ConfigAdmin.h:886
const char * getActiveId()
Get ID of active configuration set.
Definition ConfigAdmin.h:928
ConfigAdmin(coil::Properties &configsets)
Constructor.
bool isActive()
Confirm to activate configuration set.
Definition ConfigAdmin.h:979
bool unbindParameter(const char *param_name)
Unbinding configuration parameters.
void setOnActivateSet(OnActivateSetCallback *cb)
void update(const char *config_set, const char *config_param)
Update the values of configuration parameters (By name)
const std::vector< coil::Properties * > & getConfigurationSets()
Get all configuration sets.
const coil::Properties & getActiveConfigurationSet()
Get the active configuration set.
bool activateConfigurationSet(const char *config_id)
Activate the configuration set.
bool bindParameter(const char *param_name, VarType &var, const char *def_val, bool(*trans)(VarType &, const char *)=coil::stringTo)
Setup for configuration parameters.
Definition ConfigAdmin.h:693
void setOnAddConfigurationSet(OnAddConfigurationAddCallback *cb)
void update()
Update the values of configuration parameters (Active configuration set)
void removeConfigurationSetListener(ConfigurationSetListenerType type, ConfigurationSetListener *listener)
Removing ConfigurationSetListener.
void update(const char *config_set)
Update configuration parameter (By ID)
void setOnUpdateParam(OnUpdateParamCallback *cb)
coil::vstring & changedParameters()
Changed parameters list.
Definition ConfigAdmin.h:907
void removeConfigurationParamListener(ConfigurationParamListenerType type, ConfigurationParamListener *listener)
Removing ConfigurationParamListener.
bool isExist(const char *param_name)
Check the existence of configuration parameters.
void setOnSetConfigurationSet(OnSetConfigurationSetCallback *cb)
void removeConfigurationSetNameListener(ConfigurationSetNameListenerType type, ConfigurationSetNameListener *listener)
Removing ConfigurationSetNameListener.
void setOnUpdate(OnUpdateCallback *cb)
void addConfigurationParamListener(ConfigurationParamListenerType type, ConfigurationParamListener *listener, bool autoclean=true)
Adding ConfigurationParamListener.
void onUpdateParam(const char *config_param, const char *config_value)
When the configuration parameter is updated, it is called.
const coil::Properties & getConfigurationSet(const char *config_id)
Get a configuration set by specified ID.
void onSetConfigurationSet(const coil::Properties &config_set)
Called when the property is added to the configuration set.
void onRemoveConfigurationSet(const char *config_id)
Called when the configuration set has been deleted.
void onAddConfigurationSet(const coil::Properties &config_set)
Called when a set value is added to the configuration set.
void setOnRemoveConfigurationSet(OnRemoveConfigurationSetCallback *cb)
void addConfigurationSetListener(ConfigurationSetListenerType type, ConfigurationSetListener *listener, bool autoclean=true)
Adding ConfigurationSetListener.
void addConfigurationSetNameListener(ConfigurationSetNameListenerType type, ConfigurationSetNameListener *listener, bool autoclean=true)
Adding ConfigurationSetNameListener.
void onActivateSet(const char *config_id)
Called when the configuration set is made active.
void onUpdate(const char *config_set)
When the configuration parameter is updated, it is called.
~ConfigAdmin()
Virtual Destructor.
bool haveConfig(const char *config_id)
Check the existence of configuration set.
Definition ConfigAdmin.h:954
bool removeConfigurationSet(const char *config_id)
Remove the configuration set.
bool setConfigurationSetValues(const coil::Properties &config_set)
Add to configuration set from specified property.
Config class.
Definition ConfigAdmin.h:354
VarType & m_var
Configuration parameter variable .
Definition ConfigAdmin.h:450
~Config() override=default
Virtual Destructor.
bool update(const char *val) override
Update a bind parameter value.
Definition ConfigAdmin.h:427
Config(const char *conf_name, VarType &var, const char *def_val, TransFunc trans=coil::stringTo)
Constructor.
Definition ConfigAdmin.h:381
TransFunc m_trans
Transformation function to convert configuration parameter type into string format....
Definition ConfigAdmin.h:460
ConfigurationParamListener class.
Definition ConfigurationListener.h:75
ConfigurationSetListener class.
Definition ConfigurationListener.h:191
ConfigurationSetNameListener class.
Definition ConfigurationListener.h:304
ConfigurationSetNameListenerType
The types of ConfigurationSetNameListener.
Definition ConfigurationListener.h:272
ConfigurationSetListenerType
The types of ConfigurationSetListener.
Definition ConfigurationListener.h:161
ConfigurationParamListenerType
The types of ConnectorDataListener.
Definition ConfigurationListener.h:46
ConfigBase abstract class.
Definition ConfigAdmin.h:161
const char * name
Configuration name .
Definition ConfigAdmin.h:277
const char * default_value
Default value in string format .
Definition ConfigAdmin.h:286
ConfigAdmin * m_admin
A pointer to the ConfigAdmin object .
Definition ConfigAdmin.h:304
virtual bool update(const char *val)=0
Pure virtual function to update configuration parameter values.
ConfigBase(const char *name_, const char *def_val)
Constructer.
Definition ConfigAdmin.h:183
void(ConfigAdmin::*)(const char *, const char *) CallbackFunc
Definition ConfigAdmin.h:206
void setCallback(ConfigAdmin *cadmin, CallbackFunc cbf)
Setting callback.
std::string string_value
Current value in string format .
Definition ConfigAdmin.h:296
void notifyUpdate(const char *key, const char *val)
Observer function to notify variable changed.
CallbackFunc m_callback
A member function pointer to the callback function. .
Definition ConfigAdmin.h:312
virtual ~ConfigBase()=default
Virtual Destructor.