24 #include <config/config.h> 25 #include <config/change_handler.h> 371 append(
"%s: %s", prefix, msg);
384 :
Exception(
"Config value for '%s' not found", path)
401 const char *requested)
404 append(
"Config value for '%s' is not of type '%s', but of type '%s'",
405 path, requested, actual);
420 va_start(va, format);
554 _change_handlers.insert(ChangeHandlerMultimap::value_type(c, h));
573 for (ChangeHandlerMultimap::const_iterator j = _change_handlers.begin(); !changed && (j != _change_handlers.end()); ++j) {
574 _ch_range = _change_handlers.equal_range((*j).first);
575 for (ChangeHandlerMultimap::iterator i = _ch_range.first; !changed && (i != _ch_range.second); ++i) {
576 if ( (*i).second == h ) {
577 _change_handlers.erase(i);
596 for (ChangeHandlerMultimap::const_iterator j = _change_handlers.begin(); j != _change_handlers.end(); ++j) {
597 if ( strstr(path, (*j).first) == path ) {
598 _ch_range = _change_handlers.equal_range((*j).first);
599 for (ChangeHandlerMultimap::const_iterator i = _ch_range.first; i != _ch_range.second; ++i) {
600 rv->push_back((*i).second);
620 for (ChangeHandlerList::const_iterator i = h->begin(); i != h->end(); ++i) {
621 if (comment_changed) {
622 (*i)->config_comment_changed(value);
624 (*i)->config_value_changed(value);
628 for (ChangeHandlerList::const_iterator i = h->begin(); i != h->end(); ++i) {
629 (*i)->config_value_erased(path);
Fawkes library namespace.
Interface for configuration change handling.
virtual bool next()=0
Check if there is another element and advance to this if possible.
Base class for exceptions in Fawkes.
ChangeHandlerList * find_handlers(const char *path)
Find handlers for given path.
ConfigTypeMismatchException(const char *path, const char *actual, const char *requested)
Constructor.
virtual void rem_change_handler(ConfigurationChangeHandler *h)
Remove a configuration change handler.
void append_va(const char *format, va_list va)
Append messages to the message list.
ConfigurationException(const char *msg)
Constructor.
void notify_handlers(const char *path, bool comment_changed=false)
Notify handlers for given path.
CouldNotOpenConfigException(const char *format,...)
Constructor.
Iterator interface to iterate over config values.
virtual void add_change_handler(ConfigurationChangeHandler *h)
Add a configuration change handler.
const char * config_monitor_prefix()
Which path prefix shall be monitored.
void append(const char *format,...)
Append messages to the message list.
ConfigEntryNotFoundException(const char *path)
Constructor.
std::list< ConfigurationChangeHandler * > ChangeHandlerList
List that contains pointers to ConfigurationChangeHandler.