5 #ifndef config_cass_client_h
6 #define config_cass_client_h
8 #include <boost/ptr_container/ptr_map.hpp>
9 #include <boost/shared_ptr.hpp>
29 struct ConfigDBConnInfo;
33 class ConfigDBFQNameCacheEntry;
34 class ConfigDBUUIDCacheEntry;
41 typedef boost::shared_ptr<WorkQueue<ObjectProcessReq *> >
55 typedef std::map<JsonAdapterDataType, FieldTimeStampInfo, cmp_json_key>
60 uint64_t last_read_tstamp)
117 const std::string &search_string,
const std::string &last_uuid,
118 uint32_t num_entries,
119 std::vector<ConfigDBUUIDCacheEntry> *entries)
const;
134 const std::string &key,
const std::string &value,
145 const std::string &in_obj_type,
146 const std::string &in_uuid)
158 const std::string &obj_type,
const std::string &uuid_str);
163 const string &uuid_key,
const string &obj_type,
167 ObjectCacheMap::const_iterator uuid_iter,
168 ConfigDBUUIDCacheEntry *entry)
const;
216 const std::string &search_string,
int inst_num,
217 const std::string &last_uuid, uint32_t num_entries,
218 std::vector<ConfigDBUUIDCacheEntry> *entries)
const;
220 const string &lookup_key);
249 std::string *last_column);
252 bool force_update =
false);
261 #endif // config_cass_client_h
void DeleteCacheMap(const std::string &uuid)
std::pair< std::string, std::string > ObjTypeUUIDType
std::vector< ConfigCassandraPartition * > PartitionList
ConfigCassandraPartition * parent_
bool UUIDToObjCacheShow(const std::string &search_string, const std::string &last_uuid, uint32_t num_entries, std::vector< ConfigDBUUIDCacheEntry > *entries) const
ConfigClientManager * mgr()
bool EnqueueDBSyncRequest(const ObjTypeUUIDList &uuid_list)
void EnqueueUUIDRequest(std::string oper, std::string obj_type, std::string uuid_str)
void RemoveObjReqEntry(std::string &uuid)
bool operator()(const JsonAdapterDataType &k1, const JsonAdapterDataType &k2) const
virtual bool SkipTimeStampCheckForTypeAndFQName() const
virtual ~ConfigCassandraClient()
virtual void GenerateAndPushJson(const string &uuid_key, const string &obj_type, const CassColumnKVVec &cass_data_vec, bool add_change)
ObjCacheEntry(ConfigCassandraPartition *parent, uint64_t last_read_tstamp)
const FieldDetailMap & GetFieldDetailMap() const
void UpdateFQNameCache(const std::string &key, const std::string &obj_type, ObjTypeUUIDList &uuid_list)
ConfigCassandraPartition(ConfigCassandraClient *client, size_t idx)
void Enqueue(ObjectProcessReq *req)
virtual int UUIDRetryTimeInMSec(const ObjCacheEntry *obj) const
ObjectProcessRequestType(const std::string &in_oper, const std::string &in_obj_type, const std::string &in_uuid)
void CassReadRetryTimerErrorHandler()
UUIDProcessSet uuid_read_set_
void ParseObjUUIDTableEachColumnBuildContext(const std::string &uuid, const std::string &key, const std::string &value, uint64_t timestamp, CassColumnKVVec *cass_data_vec, ConfigCassandraParseContext &context)
friend class ConfigCassandraPartitionTest2
virtual void InitDatabase()
FieldDetailMap field_detail_map_
static const uint32_t kMaxUUIDRetryTimePowOfTwo
virtual void PostShutdown()
void RemoveObjReqEntries(std::set< std::string > &req_list)
virtual std::string uuid_str(const std::string &uuid)
boost::scoped_ptr< TaskTrigger > fq_name_reader_
std::map< JsonAdapterDataType, FieldTimeStampInfo, cmp_json_key > FieldDetailMap
friend class ConfigCassandraPartitionTest
bool CassReadRetryTimerExpired(const std::string uuid)
virtual void ParseObjUUIDTableEntry(const std::string &uuid, const GenDb::ColList &col_list, CassColumnKVVec *cass_data_vec, ConfigCassandraParseContext &context)
bool StoreKeyIfUpdated(const std::string &uuid, JsonAdapterDataType *adapter, uint64_t timestamp, ConfigCassandraParseContext &context)
static const std::string kObjectProcessTaskId
virtual uint32_t GetFQNameEntriesToRead() const
virtual ~ConfigCassandraPartition()
PartitionList & partitions()
uint32_t GetRetryCount() const
void HandleCassandraConnectionStatus(bool success, bool force_update=false)
ObjCacheEntry * GetObjCacheEntry(const std::string &uuid)
void EnableCassandraReadRetry(const std::string uuid)
bool IsRetryTimerCreated() const
virtual bool IsTaskTriggered() const
static const std::string kCassClientTaskId
PartitionList partitions_
FieldDetailMap & GetFieldDetailMap()
virtual bool BulkDataSync()
bool IsTaskTriggered() const
boost::ptr_map< std::string, ObjCacheEntry > ObjectCacheMap
std::list< ObjTypeUUIDType > ObjTypeUUIDList
std::vector< JsonAdapterDataType > CassColumnKVVec
boost::shared_ptr< WorkQueue< ObjectProcessReq * > > ObjProcessWorkQType
void DisableCassandraReadRetry(const std::string uuid)
virtual void HandleObjectDelete(const string &uuid, bool add_change)
bool IsRetryTimerRunning() const
ObjProcessWorkQType obj_process_queue_
friend class ConfigCassandraClientPartitionTest
static const std::string kUuidTableName
bool ProcessObjUUIDTableEntry(const std::string &uuid_key, const GenDb::ColList &col_list)
boost::scoped_ptr< GenDb::GenDbIf > GenDbIfPtr
ConfigCassandraClient(ConfigClientManager *mgr, EventManager *evm, const ConfigClientOptions &options, int num_workers)
boost::shared_ptr< TaskTrigger > config_reader_
void AddUUIDToRequestList(const std::string &oper, const std::string &obj_type, const std::string &uuid_str)
static const std::string kFqnTableName
virtual bool IsListOrMapPropEmpty(const string &uuid_key, const string &lookup_key)
ObjProcessWorkQType obj_process_queue()
virtual std::string FetchUUIDFromFQNameEntry(const std::string &key) const
ConfigCassandraClient * config_client_
int GetInstanceId() const
ObjectCacheMap object_cache_map_
ConfigCassandraPartition * GetPartition(const std::string &uuid)
virtual bool UUIDToObjCacheShow(const std::string &search_string, int inst_num, const std::string &last_uuid, uint32_t num_entries, std::vector< ConfigDBUUIDCacheEntry > *entries) const
static const int kNumFQNameEntriesToRead
virtual int HashUUID(const std::string &uuid_str) const
void ListMapPropReviseUpdateList(const std::string &uuid, ConfigCassandraParseContext &context)
void FillUUIDToObjCacheInfo(const std::string &uuid, ObjectCacheMap::const_iterator uuid_iter, ConfigDBUUIDCacheEntry *entry) const
boost::asio::io_context * ioservice()
static const uint32_t kMinUUIDRetryTimeMSec
tbb::atomic< long > bulk_sync_status_
std::map< std::string, ObjectProcessRequestType * > UUIDProcessSet
bool RequestHandler(ObjectProcessReq *req)
virtual bool ReadObjUUIDTable(const std::set< std::string > &uuid_list)
bool IsListOrMapPropEmpty(const string &uuid_key, const string &lookup_key)
ObjCacheEntry * MarkCacheDirty(const std::string &uuid)
static const int kMaxNumUUIDToRead
bool ParseFQNameRowGetUUIDList(const std::string &obj_type, const GenDb::ColList &col_list, ObjTypeUUIDList &uuid_list, std::string *last_column)
ConfigCassandraClient * client()