5 #ifndef ctrlplane_ksync_object_h
6 #define ctrlplane_ksync_object_h
9 #include <tbb/recursive_mutex.h>
12 #include <sandesh/sandesh_trace.h>
43 boost::intrusive::set_member_hook<>
node_;
65 boost::intrusive::set_member_hook<>
node_;
72 typedef boost::intrusive::member_hook<
KSyncEntry,
73 boost::intrusive::set_member_hook<>,
75 typedef boost::intrusive::set<KSyncEntry, KSyncObjectNode>
Tree;
78 boost::intrusive::set_member_hook<>,
80 typedef boost::intrusive::set<KSyncFwdReference, KSyncFwdRefNode>
FwdRefTree;
83 boost::intrusive::set_member_hook<>,
85 typedef boost::intrusive::set<KSyncBackReference, KSyncBackRefNode>
BackRefTree;
90 KSyncObject(
const std::string &name,
int max_index);
96 uint32_t cleanup_time, uint32_t cleanup_intvl,
97 uint16_t entries_per_intvl);
304 #define KSYNC_TRACE(obj, parent, ...)\
306 KSync##obj::TraceMsg(parent->GetKSyncTraceBuf(), __FILE__, __LINE__, ##__VA_ARGS__);\
309 #endif // ctrlplane_ksync_object_h
boost::intrusive::set< KSyncEntry, KSyncObjectNode > Tree
boost::intrusive::member_hook< KSyncFwdReference, boost::intrusive::set_member_hook<>,&KSyncFwdReference::node_ > KSyncFwdRefNode
virtual SandeshTraceBufferPtr GetKSyncTraceBuf()
void Change(KSyncEntry *entry)
DISALLOW_COPY_AND_ASSIGN(KSyncObject)
void InitStaleEntryCleanup(boost::asio::io_context &ios, uint32_t cleanup_time, uint32_t cleanup_intvl, uint16_t entries_per_intvl)
virtual DBFilterResp DBEntryFilter(const DBEntry *entry, const KSyncDBEntry *ksync)
KSyncEntry * Next(const KSyncEntry *entry) const
virtual KSyncEntry * DBToKSyncEntry(const DBEntry *entry)=0
void RegisterDb(DBTableBase *table)
bool operator<(const KSyncBackReference &rhs) const
uint16_t stale_entries_per_intvl_
KSyncObject(const std::string &name)
KSyncIndexTable index_table_
DBTableBase::ListenerId test_id_
DISALLOW_COPY_AND_ASSIGN(KSyncDBObject)
void BackRefDel(KSyncEntry *key)
boost::intrusive::member_hook< KSyncBackReference, boost::intrusive::set_member_hook<>,&KSyncBackReference::node_ > KSyncBackRefNode
void Delete(KSyncEntry *entry)
WorkQueue< KSyncObjectEvent * > * event_queue_
KSyncEntry * back_reference_
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
bool StaleEntryCleanupCb()
static void Unregister(KSyncObject *)
virtual void Free(KSyncEntry *entry)
virtual void NetlinkAck(KSyncEntry *entry, KSyncEntry::KSyncEvent event)
void ChangeKey(KSyncEntry *entry, uint32_t arg)
void Enqueue(KSyncObjectEvent *event)
void set_delete_scheduled()
virtual void CleanupOnDel(KSyncEntry *kentry)
KSyncObjectEvent(KSyncObject *obj, Event event)
void NetlinkAckInternal(KSyncEntry *entry, KSyncEntry::KSyncEvent event)
boost::intrusive::set< KSyncBackReference, KSyncBackRefNode > BackRefTree
std::set< KSyncEntry::KSyncEntryPtr > stale_entry_tree_
KSyncEntry * CreateImpl(const KSyncEntry *key)
virtual bool DoEventTrace(void)
Timer * stale_entry_cleanup_timer_
friend void TestTriggerStaleEntryCleanupCb(KSyncObject *obj)
virtual void UpdateKey(KSyncEntry *entry, uint32_t arg)
KSyncDBObject(const std::string &name)
void SafeNotifyEvent(KSyncEntry *entry, KSyncEntry::KSyncEvent event)
boost::intrusive::set_member_hook node_
DBTableBase::ListenerId id() const
DBTableBase * GetDBTable()
boost::intrusive_ptr< KSyncEntry > KSyncEntryPtr
SandeshTraceBufferPtr KSyncTraceBuf
void BackRefAdd(KSyncEntry *key, KSyncEntry *reference)
void ClearStale(KSyncEntry *entry)
bool operator<(const KSyncFwdReference &rhs) const
virtual uint32_t GetKey(KSyncEntry *entry)
void Notify(DBTablePartBase *partition, DBEntryBase *entry)
void NotifyEvent(KSyncEntry *entry, KSyncEntry::KSyncEvent event)
uint32_t stale_entry_cleanup_intvl_
static BackRefTree back_ref_tree_
virtual void PreFree(KSyncEntry *entry)
KSyncEntry * Find(const KSyncEntry *key)
DBTableBase::ListenerId id_
KSyncFwdReference(KSyncEntry *key, KSyncEntry *ref)
KSyncEntry * GetReference(const KSyncEntry *key)
bool Process(KSyncObjectEvent *event)
void FreeInd(KSyncEntry *entry, uint32_t index)
KSyncEntry * Create(const KSyncEntry *key)
void BackRefReEval(KSyncEntry *key)
boost::intrusive::set_member_hook node_
bool IsIndexValid() const
boost::intrusive::set< KSyncFwdReference, KSyncFwdRefNode > FwdRefTree
DBTableBase::ListenerId GetListenerId(DBTableBase *table)
static std::unique_ptr< KSyncEntry > default_defer_entry_
KSyncEntry * CreateStale(const KSyncEntry *key)
void Delete(KSyncObject *)
static const int kMaxEntriesProcess
boost::intrusive::member_hook< KSyncEntry, boost::intrusive::set_member_hook<>,&KSyncEntry::node_ > KSyncObjectNode
tbb::recursive_mutex lock_
void UnregisterDb(DBTableBase *table)
static FwdRefTree fwd_ref_tree_
static KSyncEntry * default_defer_entry()
static KSyncObjectManager * Init()
void set_test_id(DBTableBase::ListenerId id)
virtual void CleanupOnDel(KSyncEntry *kentry)
virtual void EmptyTable(void)
virtual KSyncEntry * Alloc(const KSyncEntry *key, uint32_t index)=0
static KSyncObjectManager * GetInstance()
static KSyncObjectManager * singleton_
KSyncIndexTable index_table_
KSyncEntry::KSyncEntryPtr ref_
KSyncBackReference(KSyncEntry *key, KSyncEntry *ref)
boost::intrusive::set_member_hook node_