5 #ifndef config_etcd_client_h
6 #define config_etcd_client_h
8 #include <boost/ptr_container/ptr_map.hpp>
9 #include <boost/shared_ptr.hpp>
30 using contrail_rapidjson::Document;
31 using contrail_rapidjson::Value;
35 struct ConfigDBConnInfo;
38 class ConfigDBUUIDCacheEntry;
45 typedef boost::shared_ptr<WorkQueue<ObjectProcessReq *> >
51 const string &value_str,
52 uint64_t last_read_tstamp)
62 void EnableEtcdReadRetry(
const string uuid,
64 void DisableEtcdReadRetry(
const string uuid);
68 json_str_ = value_str;
72 list_map_set_.insert(make_pair(prop.c_str(), empty));
74 bool ListOrMapPropEmpty(
const string &prop)
const;
80 return (retry_timer_ != NULL);
82 bool IsRetryTimerRunning()
const;
86 friend class ConfigEtcdPartitionTest;
87 bool EtcdReadRetryTimerExpired(
const string uuid,
89 void EtcdReadRetryTimerErrorHandler();
98 static const uint32_t kMaxUUIDRetryTimePowOfTwo = 20;
99 static const uint32_t kMinUUIDRetryTimeMSec = 100;
106 const string &value_str,
109 const string &value_str,
112 uuid_cache_map_.erase(uuid);
114 virtual int UUIDRetryTimeInMSec(
const UUIDCacheEntry *obj)
const;
116 void FillUUIDToObjCacheInfo(
const string &
uuid,
117 UUIDCacheMap::const_iterator uuid_iter,
118 ConfigDBUUIDCacheEntry *entry)
const;
119 bool UUIDToObjCacheShow(
120 const string &search_string,
const string &last_uuid,
121 uint32_t num_entries,
122 vector<ConfigDBUUIDCacheEntry> *entries)
const;
127 return obj_process_queue_;
131 bool IsListOrMapPropEmpty(
const string &uuid_key,
132 const string &lookup_key);
133 virtual bool IsTaskTriggered()
const;
137 return config_client_;
145 const string &in_uuid,
146 const string &in_value)
147 : oper(in_oper),
uuid(in_uuid), value(in_value) {
157 void AddUUIDToProcessList(
const string &oper,
158 const string &uuid_key,
159 const string &value_str);
161 void ProcessUUIDUpdate(
const string &uuid_key,
162 const string &value_str);
163 void ProcessUUIDDelete(
const string &uuid_key);
164 virtual bool GenerateAndPushJson(
165 const string &uuid_key,
169 void RemoveObjReqEntry(
string &
uuid);
192 virtual void InitDatabase();
194 void EnqueueUUIDRequest(
string oper,
string obj_type,
205 virtual bool UUIDToObjCacheShow(
206 const string &search_string,
int inst_num,
207 const string &last_uuid, uint32_t num_entries,
208 vector<ConfigDBUUIDCacheEntry> *entries)
const;
210 virtual bool IsListOrMapPropEmpty(
const string &uuid_key,
211 const string &lookup_key);
213 bool IsTaskTriggered()
const;
218 disable_watch_ = disable;
224 virtual bool BulkDataSync();
227 virtual int HashUUID(
const std::string &uuid_str)
const;
230 virtual void PostShutdown();
240 void HandleEtcdConnectionStatus(
bool success,
241 bool force_update =
false);
253 #endif // config_etcd_client_h
UUIDProcessWorkQType obj_process_queue()
UUIDProcessWorkQType obj_process_queue_
pair< string, string > UUIDValueType
PartitionList & partitions()
boost::scoped_ptr< TaskTrigger > uuid_reader_
boost::shared_ptr< WorkQueue< ObjectProcessReq * > > UUIDProcessWorkQType
const string & GetJsonString() const
UUIDCacheMap uuid_cache_map_
vector< ConfigEtcdPartition * > PartitionList
UUIDProcessRequestType(const string &in_oper, const string &in_uuid, const string &in_value)
tbb::atomic< long > bulk_sync_status_
void SetJsonString(const string &value_str)
boost::scoped_ptr< EtcdIf > eqlif_
ConfigEtcdPartition * parent_
UUIDProcessSet uuid_process_set_
static bool disable_watch_
PartitionList partitions_
boost::shared_ptr< TaskTrigger > config_reader_
uint32_t GetRetryCount() const
map< string, UUIDProcessRequestType * > UUIDProcessSet
map< string, bool > ListMapSet
ConfigEtcdClient * client()
ConfigEtcdClient * config_client_
UUIDCacheEntry(ConfigEtcdPartition *parent, const string &value_str, uint64_t last_read_tstamp)
list< UUIDValueType > UUIDValueList
int GetInstanceId() const
static void set_watch_disable(bool disable)
void DeleteCacheMap(const string &uuid)
void SetListOrMapPropEmpty(const string &prop, bool empty)
bool IsRetryTimerCreated() const
boost::ptr_map< string, UUIDCacheEntry > UUIDCacheMap