5 #ifndef ctrlplane_db_table_partition_h
6 #define ctrlplane_db_table_partition_h
8 #include <boost/intrusive/list.hpp>
9 #include <tbb/spin_rw_mutex.h>
10 #include <tbb/mutex.h>
22 boost::intrusive::list_member_hook<>,
25 typedef boost::intrusive::list<DBEntryBase, ChangeListMember>
ChangeList;
68 typedef boost::intrusive::member_hook<
DBEntry,
69 boost::intrusive::set_member_hook<>,
71 typedef boost::intrusive::set<DBEntry, SetMember>
Tree;
boost::intrusive::list_member_hook chg_list_
boost::intrusive::set_member_hook node_
void Notify(DBEntryBase *entry)
virtual DBEntryBase * GetNext(const DBEntryBase *)=0
DISALLOW_COPY_AND_ASSIGN(DBTablePartBase)
tbb::spin_rw_mutex & dbstate_mutex()
virtual DBEntryBase * GetFirst()=0
tbb::spin_rw_mutex dbstate_mutex_
virtual DBEntryBase * lower_bound(const DBEntryBase *key)=0
void Delete(DBEntryBase *)
DBTablePartBase(DBTableBase *tbl_base, int index)
virtual ~DBTablePartBase()
boost::intrusive::list< DBEntryBase, ChangeListMember > ChangeList
virtual void Process(DBClient *client, DBRequest *req)=0
boost::intrusive::member_hook< DBEntryBase, boost::intrusive::list_member_hook<>, &DBEntryBase::chg_list_ > ChangeListMember
static const int kMaxIterations
virtual void Remove(DBEntryBase *)=0
virtual void Change(DBEntry *entry)
void Process(DBClient *client, DBRequest *req)
virtual void Add(DBEntry *entry)
void RemoveWithoutDelete(DBEntry *entry)
DBEntry * FindNext(const DBRequestKey *key)
DBEntry * FindInternal(const DBEntry *entry)
DBEntry * FindNoLock(const DBEntry *entry)
DBTablePartition(DBTable *parent, int index)
virtual DBEntry * GetNext(const DBEntryBase *entry)
void AddWithoutAlloc(DBEntry *entry)
virtual DBEntry * lower_bound(const DBEntryBase *entry)
boost::intrusive::set< DBEntry, SetMember > Tree
DBEntry * Find(const DBEntry *entry)
virtual void Remove(DBEntryBase *entry)
DISALLOW_COPY_AND_ASSIGN(DBTablePartition)
virtual DBEntry * GetFirst()
boost::intrusive::member_hook< DBEntry, boost::intrusive::set_member_hook<>, &DBEntry::node_ > SetMember