5 #ifndef BASE_FEATURE_FLAGS_H_
6 #define BASE_FEATURE_FLAGS_H_
11 #include <boost/function.hpp>
12 #include <boost/scoped_ptr.hpp>
15 #include <base/sandesh/process_info_constants.h>
16 #include <base/sandesh/process_info_types.h>
18 #include "rapidjson/document.h"
19 #include "rapidjson/stringbuffer.h"
20 #include "rapidjson/writer.h"
116 return "Experimental";
125 return "In Progress";
128 return "Pre Retired";
138 if (
type ==
"Experimental") {
141 if (
type ==
"Alpha") {
144 if (
type ==
"Beta") {
147 if (
type ==
"In-Progress") {
150 if (
type ==
"Pre-Retired") {
153 if (
type ==
"Unknown") {
161 FlagContext(
const std::string& description,
const std::string &val)
173 return !(*
this == rhs);
228 return !(*
this == rhs);
340 static void Initialize(
const string &build_info);
346 void Set(
const std::string &name,
const std::string &version_info,
352 void Unset(
const std::string &name);
458 void Set(
const std::string &name,
const std::string &
version,
bool enabled,
464 void Unset(
const std::string &name);
471 bool IsFlagEnabled(
const std::string &name,
bool default_state,
543 typedef std::map<std::string, FlagConfig>
FlagMap;
FlagManager * flag_manager_
DISALLOW_COPY_AND_ASSIGN(FlagConfigManager)
FlagConfigManager(FlagManager *manager)
void Unset(const std::string &name)
static FlagConfigManager * GetInstance()
static std::string version_
static boost::scoped_ptr< FlagConfigManager > instance_
static void Initialize(const string &build_info)
void Set(const std::string &name, const std::string &version_info, bool enabled, FlagState::Type state, ContextVec &context_infos)
void set_version(const std::string &val)
ContextVec context_infos_
void set_name(const std::string &val)
void set_enabled(bool val)
const FlagState::Type & state() const
void set_state(const FlagState::Type &val)
const std::string & name() const
bool operator==(const FlagConfig &rhs) const
const std::string & version() const
const ContextVec & context_infos() const
void set_context_infos(const ContextVec &val)
FlagConfig(const std::string &name, const std::string &version, bool enabled, FlagState::Type state, ContextVec &context_infos)
bool operator!=(const FlagConfig &rhs) const
bool IsRegistered(const Flag *flag) const
size_t GetIntMapCount() const
std::map< std::string, FlagConfig >::iterator flag_map_itr
std::multimap< std::string, Flag * >::iterator int_map_itr
size_t GetFlagMapCount() const
void Register(Flag *flag)
void Set(const std::string &name, const std::string &version, bool enabled, FlagState::Type state, ContextVec &context_infos)
static FlagManager * GetInstance()
FlagConfigVec GetFlagInfosUnlocked() const
std::multimap< std::string, Flag * >::const_iterator int_map_const_itr
void Unregister(const Flag *flag)
bool IsFlagEnabled(const std::string &name, bool default_state, const ContextVec &c_vec) const
void Unset(const std::string &name)
static boost::scoped_ptr< FlagManager > instance_
DISALLOW_COPY_AND_ASSIGN(FlagManager)
FlagConfigVec GetFlagInfos() const
std::map< std::string, FlagConfig >::const_iterator flag_map_citr
std::multimap< std::string, Flag * > InterestMap
std::map< std::string, FlagConfig > FlagMap
FlagConfigVec GetFlagInfos(bool lock) const
boost::function< void(void)> FlagUveCb
static void CreateInstance(FlagManager *mgr, FlagUveCb send_uve_cb)
static boost::scoped_ptr< FlagUveManager > instance_
DISALLOW_COPY_AND_ASSIGN(FlagUveManager)
FlagManager * flag_manager_
FlagUveManager(FlagManager *manager, FlagUveCb send_uve_cb)
static FlagUveManager * GetInstance()
const ContextVec & context_infos() const
bool operator!=(const Flag &rhs) const
void set_context_infos(const ContextVec &val)
bool operator==(const Flag &rhs) const
void set_name(const std::string &val)
DISALLOW_COPY_AND_ASSIGN(Flag)
const std::string & name() const
boost::function< void()> FlagStateCb
void set_description(const std::string &val)
ContextVec context_infos_
void set_enabled(const bool val)
const bool enabled() const
const std::string & description() const
FlagStateCb flag_state_cb_
Flag(FlagManager *manager, const std::string &name, const std::string &description, bool enabled, ContextVec &context_infos)
std::vector< FlagContext >::size_type context_size
std::vector< Flag > FlagVec
std::vector< FlagConfig > FlagConfigVec
std::vector< FlagContext >::const_iterator context_iterator
std::vector< FlagContext > ContextVec
std::vector< FlagConfig >::const_iterator flag_cfg_itr
bool operator!=(const FlagContext &rhs) const
bool operator==(const FlagContext &rhs) const
FlagContext(const std::string &description, const std::string &val)
static Type FromString(const std::string &type)
static std::string ToString(Type state)