22#ifndef INCLUDE_OLAD_PREFERENCES_H_
23#define INCLUDE_OLAD_PREFERENCES_H_
27#include <ola/io/SelectServer.h>
30#include <ola/thread/Thread.h>
48 virtual bool IsValid(
const std::string &value)
const = 0;
59 m_empty_ok(empty_ok) {
61 bool IsValid(
const std::string &value)
const;
64 const bool m_empty_ok;
74 explicit SetValidator(
const std::set<T> &values) : m_values(values) {}
75 bool IsValid(
const std::string &value)
const;
88 bool IsValid(
const std::string &value)
const;
93 static const char ENABLED[];
94 static const char DISABLED[];
103 UIntValidator(
unsigned int greater_than,
unsigned int less_than)
104 : m_gt(greater_than),
106 bool IsValid(
const std::string &value)
const;
109 unsigned int m_gt, m_lt;
119 : m_gt(greater_than),
121 bool IsValid(
const std::string &value)
const;
134 m_empty_ok(empty_ok) {}
136 bool IsValid(
const std::string &value)
const;
150 explicit Preferences(
const std::string name): m_preference_name(name) {}
183 virtual void SetValue(
const std::string &key,
const std::string &value) = 0;
191 virtual void SetValue(
const std::string &key,
unsigned int value) = 0;
199 virtual void SetValue(
const std::string &key,
int value) = 0;
207 const std::string &value) = 0;
236 const std::string &value) = 0;
250 const char value[]) = 0;
263 unsigned int value) = 0;
297 virtual std::string
GetValue(
const std::string &key)
const = 0;
305 const std::string &key)
const = 0;
312 virtual bool HasKey(
const std::string &key)
const = 0;
336 std::string m_preference_name;
368 virtual Preferences *Create(
const std::string &name) = 0;
369 std::map<std::string, Preferences*> m_preferences_map;
380 virtual bool Load() {
return true; }
381 virtual bool Save()
const {
return true; }
382 virtual void Clear();
386 virtual void SetValue(
const std::string &key,
const std::string &value);
387 virtual void SetValue(
const std::string &key,
unsigned int value);
388 virtual void SetValue(
const std::string &key,
int value);
390 const std::string &value);
395 const std::string &value);
409 virtual std::string
GetValue(
const std::string &key)
const;
411 const std::string &key)
const;
412 virtual bool HasKey(
const std::string &key)
const;
421 return m_pref_map == other.m_pref_map;
425 typedef std::multimap<std::string, std::string> PreferencesMap;
426 PreferencesMap m_pref_map;
446 typedef std::multimap<std::string, std::string> PreferencesMap;
449 void SavePreferences(
const std::string &filename,
450 const PreferencesMap &preferences);
460 bool Join(
void *ptr = NULL);
486 const std::string &name,
489 m_directory(directory),
490 m_saver_thread(saver_thread) {}
493 virtual bool Save()
const;
504 const std::string m_directory;
507 bool ChangeDir()
const;
512 const std::string FileName()
const;
513 static const char OLA_CONFIG_PREFIX[];
514 static const char OLA_CONFIG_SUFFIX[];
521 : m_directory(directory) {
522 m_saver_thread.
Start();
526 m_saver_thread.
Join();
532 const std::string m_directory;
Header file for OLA Logging.
Definition Preferences.h:85
Definition Preferences.h:518
virtual std::string ConfigLocation() const
The location where preferences will be stored.
Definition Preferences.h:529
Definition Preferences.h:483
virtual bool Save() const
Definition Preferences.cpp:420
bool LoadFromFile(const std::string &filename)
Load these preferences from a file.
Definition Preferences.cpp:432
virtual bool Load()
Definition Preferences.cpp:415
std::string ConfigLocation() const
The location of where these preferences are stored.
Definition Preferences.h:501
Definition Preferences.h:444
void * Run()
Definition Preferences.cpp:376
bool Join(void *ptr=NULL)
Definition Preferences.cpp:382
void Syncronize()
Definition Preferences.cpp:388
Definition Preferences.h:131
Definition Preferences.h:116
Definition Preferences.h:430
virtual std::string ConfigLocation() const
The location where preferences will be stored.
Definition Preferences.h:432
Definition Preferences.h:376
virtual bool Save() const
Definition Preferences.h:381
virtual std::string GetValue(const std::string &key) const
Get a preference value.
Definition Preferences.cpp:305
virtual std::vector< std::string > GetMultipleValue(const std::string &key) const
Returns all preference values corresponding to this key.
Definition Preferences.cpp:315
virtual void SetValue(const std::string &key, const std::string &value)
Set a preference value, overriding the existing value.
Definition Preferences.cpp:227
virtual std::string ConfigLocation() const
The location of where these preferences are stored.
Definition Preferences.h:384
virtual void SetMultipleValue(const std::string &key, const std::string &value)
Adds this preference value to the store.
Definition Preferences.cpp:244
virtual bool HasKey(const std::string &key) const
Check if a preference key exists.
Definition Preferences.cpp:327
virtual void RemoveValue(const std::string &key)
Remove a preference value.
Definition Preferences.cpp:332
virtual bool SetDefaultValue(const std::string &key, const Validator &validator, const std::string &value)
Set a preference value if it doesn't already exist, or if it exists and doesn't pass the validator.
Definition Preferences.cpp:261
virtual bool Load()
Definition Preferences.h:380
virtual bool GetValueAsBool(const std::string &key) const
Get a preference value as a bool.
Definition Preferences.cpp:337
virtual void SetValueAsBool(const std::string &key, bool value)
Set a value as a bool.
Definition Preferences.cpp:347
virtual void Clear()
Definition Preferences.cpp:222
Definition Preferences.h:347
virtual std::string ConfigLocation() const =0
The location where preferences will be stored.
virtual Preferences * NewPreference(const std::string &name)
Definition Preferences.cpp:202
virtual ~PreferencesFactory()
Definition Preferences.cpp:192
Definition Preferences.h:148
virtual bool HasKey(const std::string &key) const =0
Check if a preference key exists.
virtual bool SetDefaultValue(const std::string &key, const Validator &validator, unsigned int value)=0
Set a preference value if it doesn't already exist, or if it exists and doesn't pass the validator....
virtual void SetMultipleValue(const std::string &key, int value)=0
Adds this preference value to the store. This helper accepts an int.
virtual void SetValue(const std::string &key, const std::string &value)=0
Set a preference value, overriding the existing value.
virtual void SetValueAsBool(const std::string &key, bool value)=0
Set a value as a bool.
virtual bool GetValueAsBool(const std::string &key) const =0
Get a preference value as a bool.
virtual bool SetDefaultValue(const std::string &key, const Validator &validator, const char value[])=0
Set a preference value if it doesn't already exist, or if it exists and doesn't pass the validator....
virtual void SetMultipleValue(const std::string &key, unsigned int value)=0
Adds this preference value to the store. This helper accepts an unsigned int.
virtual bool SetDefaultValue(const std::string &key, const Validator &validator, int value)=0
Set a preference value if it doesn't already exist, or if it exists and doesn't pass the validator....
virtual void SetValue(const std::string &key, int value)=0
Set a preference value, overriding the existing value. This helper accepts an int.
virtual bool SetDefaultValue(const std::string &key, const Validator &validator, bool value)=0
Set a preference value if it doesn't already exist, or if it exists and doesn't pass the validator....
virtual bool Save() const =0
virtual std::string ConfigLocation() const =0
The location of where these preferences are stored.
virtual std::vector< std::string > GetMultipleValue(const std::string &key) const =0
Returns all preference values corresponding to this key.
virtual std::string GetValue(const std::string &key) const =0
Get a preference value.
virtual void RemoveValue(const std::string &key)=0
Remove a preference value.
virtual void SetValue(const std::string &key, unsigned int value)=0
Set a preference value, overriding the existing value. This helper accepts an unsigned int.
virtual ~Preferences()
Definition Preferences.h:155
virtual bool SetDefaultValue(const std::string &key, const Validator &validator, const std::string &value)=0
Set a preference value if it doesn't already exist, or if it exists and doesn't pass the validator.
virtual void SetMultipleValue(const std::string &key, const std::string &value)=0
Adds this preference value to the store.
Definition Preferences.h:72
Definition Preferences.h:55
Definition Preferences.h:101
Definition Preferences.h:43
A single threaded I/O event management system.
Definition SelectServer.h:63
virtual bool Start()
Start the thread and wait for the thread to be running.
Definition Thread.cpp:90
The namespace containing all OLA symbols.
Definition Credentials.cpp:44