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>
31 using contrail_rapidjson::Document;
32 using contrail_rapidjson::Value;
36 struct ConfigDBConnInfo;
39 class ConfigDBUUIDCacheEntry;
46 typedef boost::shared_ptr<WorkQueue<ObjectProcessReq *> >
52 const string &value_str,
53 uint64_t last_read_tstamp)
63 void EnableEtcdReadRetry(
const string uuid,
65 void DisableEtcdReadRetry(
const string uuid);
69 json_str_ = value_str;
73 list_map_set_.insert(make_pair(prop.c_str(), empty));
75 bool ListOrMapPropEmpty(
const string &prop)
const;
81 return (retry_timer_ != NULL);
83 bool IsRetryTimerRunning()
const;
87 friend class ConfigEtcdPartitionTest;
88 bool EtcdReadRetryTimerExpired(
const string uuid,
90 void EtcdReadRetryTimerErrorHandler();
99 static const uint32_t kMaxUUIDRetryTimePowOfTwo = 20;
100 static const uint32_t kMinUUIDRetryTimeMSec = 100;
107 const string &value_str,
110 const string &value_str,
113 uuid_cache_map_.erase(
uuid);
115 virtual int UUIDRetryTimeInMSec(
const UUIDCacheEntry *obj)
const;
117 void FillUUIDToObjCacheInfo(
const string &
uuid,
118 UUIDCacheMap::const_iterator uuid_iter,
119 ConfigDBUUIDCacheEntry *entry)
const;
120 bool UUIDToObjCacheShow(
121 const string &search_string,
const string &last_uuid,
122 uint32_t num_entries,
123 vector<ConfigDBUUIDCacheEntry> *entries)
const;
128 return obj_process_queue_;
132 bool IsListOrMapPropEmpty(
const string &uuid_key,
133 const string &lookup_key);
134 virtual bool IsTaskTriggered()
const;
138 return config_client_;
146 const string &in_uuid,
147 const string &in_value)
148 : oper(in_oper),
uuid(in_uuid), value(in_value) {
158 void AddUUIDToProcessList(
const string &oper,
159 const string &uuid_key,
160 const string &value_str);
162 void ProcessUUIDUpdate(
const string &uuid_key,
163 const string &value_str);
164 void ProcessUUIDDelete(
const string &uuid_key);
165 virtual bool GenerateAndPushJson(
166 const string &uuid_key,
170 void RemoveObjReqEntry(
string &
uuid);
193 virtual void InitDatabase();
195 void EnqueueUUIDRequest(
string oper,
string obj_type,
206 virtual bool UUIDToObjCacheShow(
207 const string &search_string,
int inst_num,
208 const string &last_uuid, uint32_t num_entries,
209 vector<ConfigDBUUIDCacheEntry> *entries)
const;
211 virtual bool IsListOrMapPropEmpty(
const string &uuid_key,
212 const string &lookup_key);
214 bool IsTaskTriggered()
const;
219 disable_watch_ = disable;
225 virtual bool BulkDataSync();
228 virtual int HashUUID(
const std::string &uuid_str)
const;
231 virtual void PostShutdown();
241 void HandleEtcdConnectionStatus(
bool success,
242 bool force_update =
false);
PartitionList partitions_
pair< string, string > UUIDValueType
vector< ConfigEtcdPartition * > PartitionList
std::atomic< long > bulk_sync_status_
static void set_watch_disable(bool disable)
boost::scoped_ptr< EtcdIf > eqlif_
static bool disable_watch_
PartitionList & partitions()
list< UUIDValueType > UUIDValueList
boost::scoped_ptr< TaskTrigger > uuid_reader_
UUIDCacheEntry(ConfigEtcdPartition *parent, const string &value_str, uint64_t last_read_tstamp)
map< string, bool > ListMapSet
ConfigEtcdPartition * parent_
void SetJsonString(const string &value_str)
const string & GetJsonString() const
void SetListOrMapPropEmpty(const string &prop, bool empty)
bool IsRetryTimerCreated() const
uint32_t GetRetryCount() const
boost::ptr_map< string, UUIDCacheEntry > UUIDCacheMap
void DeleteCacheMap(const string &uuid)
boost::shared_ptr< TaskTrigger > config_reader_
ConfigEtcdClient * config_client_
boost::shared_ptr< WorkQueue< ObjectProcessReq * > > UUIDProcessWorkQType
const UUIDCacheEntry * GetUUIDCacheEntry(const string &uuid, const string &value_str, bool &is_new) const
UUIDProcessWorkQType obj_process_queue_
int GetInstanceId() const
ConfigEtcdClient * client()
UUIDProcessWorkQType obj_process_queue()
UUIDCacheMap uuid_cache_map_
map< string, UUIDProcessRequestType * > UUIDProcessSet
const UUIDCacheEntry * GetUUIDCacheEntry(const string &uuid) const
UUIDProcessSet uuid_process_set_
UUIDProcessRequestType(const string &in_oper, const string &in_uuid, const string &in_value)