OpenSDN source code
|
#include <db_table.h>
Classes | |
class | TableWalker |
class | WalkWorker |
Public Types | |
typedef boost::intrusive_ptr < DBTableWalk > | DBTableWalkRef |
typedef boost::function< bool(DBTablePartBase *, DBEntryBase *)> | WalkFn |
typedef boost::function< void(DBTableWalkRef, DBTableBase *)> | WalkCompleteFn |
![]() | |
typedef boost::function< void(DBTablePartBase *, DBEntryBase *)> | ChangeCallback |
typedef int | ListenerId |
Public Member Functions | |
DBTable (DB *db, const std::string &name) | |
virtual | ~DBTable () |
void | Init () |
virtual std::unique_ptr< DBEntry > | AllocEntry (const DBRequestKey *key) const =0 |
virtual size_t | Hash (const DBEntry *entry) const |
virtual size_t | Hash (const DBRequestKey *key) const |
virtual DBTablePartition * | AllocPartition (int index) |
virtual void | Input (DBTablePartition *tbl_partition, DBClient *client, DBRequest *req) |
virtual DBEntry * | Add (const DBRequest *req) |
virtual bool | OnChange (DBEntry *entry, const DBRequest *req) |
virtual bool | Delete (DBEntry *entry, const DBRequest *req) |
void | NotifyAllEntries () |
DBEntry * | Find (const DBEntry *entry) |
const DBEntry * | Find (const DBEntry *entry) const |
DBEntry * | Find (const DBRequestKey *key, int id=-1) |
const DBEntry * | Find (const DBRequestKey *key, int id=-1) const |
DBEntry * | FindNoLock (const DBEntry *entry) |
DBEntry * | FindNoLock (const DBRequestKey *key) |
virtual DBTablePartBase * | GetTablePartition (const DBRequestKey *key) |
virtual const DBTablePartBase * | GetTablePartition (const DBRequestKey *key) const |
virtual DBTablePartBase * | GetTablePartition (const DBEntryBase *entry) |
virtual const DBTablePartBase * | GetTablePartition (const DBEntryBase *entry) const |
virtual DBTablePartBase * | GetTablePartition (const int index) |
virtual const DBTablePartBase * | GetTablePartition (const int index) const |
virtual void | Change (DBEntryBase *entry) |
virtual int | PartitionCount () const |
virtual size_t | Size () const |
DBTableWalkRef | AllocWalker (WalkFn walk_fn, WalkCompleteFn walk_complete) |
void | ReleaseWalker (DBTableWalkRef &walk) |
void | WalkTable (DBTableWalkRef walk) |
void | WalkAgain (DBTableWalkRef walk) |
void | SetWalkIterationToYield (int count) |
int | GetWalkIterationToYield () |
void | SetWalkTaskId (int task_id) |
int | GetWalkerTaskId () |
![]() | |
DBTableBase (DB *db, const std::string &name) | |
virtual | ~DBTableBase () |
bool | Enqueue (DBRequest *req) |
void | EnqueueRemove (DBEntryBase *db_entry) |
virtual void | AddRemoveCallback (const DBEntryBase *entry, bool add) const |
ListenerId | Register (ChangeCallback callback, const std::string &name="unspecified") |
void | Unregister (ListenerId listener) |
void | RunNotify (DBTablePartBase *tpart, DBEntryBase *entry) |
void | AddToDBStateCount (ListenerId listener, int count) |
uint64_t | GetDBStateCount (ListenerId listener) |
bool | empty () const |
virtual void | RetryDelete () |
virtual bool | MayDelete () const |
DB * | database () |
const DB * | database () const |
const std::string & | name () const |
bool | HasListeners () const |
size_t | GetListenerCount () const |
void | FillListeners (std::vector< ShowTableListener > *listeners) const |
uint64_t | enqueue_count () const |
void | incr_enqueue_count () |
void | reset_enqueue_count () |
uint64_t | input_count () const |
void | incr_input_count () |
void | reset_input_count () |
uint64_t | notify_count () const |
void | incr_notify_count () |
void | reset_notify_count () |
bool | HasWalkers () const |
uint64_t | walker_count () const |
void | incr_walker_count () |
uint64_t | decr_walker_count () |
uint64_t | walk_request_count () const |
uint64_t | walk_complete_count () const |
uint64_t | walk_cancel_count () const |
uint64_t | walk_again_count () const |
uint64_t | walk_count () const |
void | incr_walk_request_count () |
void | incr_walk_complete_count () |
void | incr_walk_cancel_count () |
void | incr_walk_again_count () |
void | incr_walk_count () |
Static Public Member Functions | |
static void | DBStateClear (DBTable *table, ListenerId id) |
Static Public Attributes | |
static const int | kIterationToYield = 256 |
![]() | |
static const int | kInvalidId = -1 |
Private Member Functions | |
int | GetPartitionId (const DBRequestKey *key) |
int | GetPartitionId (const DBEntry *entry) |
void | StartWalk () |
bool | InvokeWalkCb (DBTablePartBase *part, DBEntryBase *entry) |
void | WalkDone () |
bool | WalkCallback (DBTablePartBase *tpart, DBEntryBase *entry) |
void | WalkCompleteCallback (DBTableBase *tbl_base) |
DISALLOW_COPY_AND_ASSIGN (DBTable) | |
Static Private Member Functions | |
static void | db_walker_wait () |
Private Attributes | |
std::unique_ptr< TableWalker > | walker_ |
std::vector< DBTablePartition * > | partitions_ |
DBTable::DBTableWalkRef | walk_ref_ |
int | walker_task_id_ |
int | max_walk_iteration_to_yield_ |
Friends | |
class | DBTableWalkMgr |
Definition at line 167 of file db_table.h.
typedef boost::intrusive_ptr<DBTableWalk> DBTable::DBTableWalkRef |
Definition at line 169 of file db_table.h.
typedef boost::function<void(DBTableWalkRef, DBTableBase *)> DBTable::WalkCompleteFn |
Definition at line 179 of file db_table.h.
typedef boost::function<bool(DBTablePartBase *, DBEntryBase *)> DBTable::WalkFn |
Definition at line 176 of file db_table.h.
DBTable::DBTable | ( | DB * | db, |
const std::string & | name | ||
) |
Definition at line 362 of file db_table.cc.
|
virtual |
Reimplemented in NextHopTable, AgentOperDBTable, ServiceInstanceTable, VxLanTable, MirrorTable, PhysicalDeviceVnTable, MplsTable, CryptTunnelTable, VrfAssignTable, and PolicyTable.
Definition at line 403 of file db_table.cc.
|
pure virtual |
Implemented in NextHopTable, HealthCheckTable, VnTable, InterfaceTable, VrfTable, AclTable, AgentQosConfigTable, TagTable, VxLanTable, ServiceInstanceTable, MirrorTable, PhysicalDeviceTable, PhysicalDeviceVnTable, AgentRouteTable, PolicySetTable, SecurityLoggingObjectTable, BridgeDomainTable, MplsTable, ForwardingClassTable, VrfAssignTable, CryptTunnelTable, QosQueueTable, MulticastPolicyTable, VmTable, SgTable, PolicyTable, IFMapLinkTable, IFMapAgentTable, MvpnTable, IFMapServerTable, ErmVpnTable, InetTable, Inet6Table, InetVpnTable, RTargetTable, EvpnTable, and Inet6VpnTable.
|
virtual |
Reimplemented in AgentDBTable.
Definition at line 393 of file db_table.cc.
DBTable::DBTableWalkRef DBTable::AllocWalker | ( | WalkFn | walk_fn, |
WalkCompleteFn | walk_complete | ||
) |
|
virtual |
Implements DBTableBase.
Definition at line 407 of file db_table.cc.
|
inlinestaticprivate |
Definition at line 308 of file db_table.h.
|
static |
Reimplemented in NextHopTable, AgentOperDBTable, ServiceInstanceTable, VxLanTable, MirrorTable, PhysicalDeviceVnTable, MplsTable, CryptTunnelTable, and PolicyTable.
Definition at line 416 of file db_table.cc.
|
private |
DBEntry * DBTable::Find | ( | const DBRequestKey * | key, |
int | id = -1 |
||
) |
const DBEntry * DBTable::Find | ( | const DBRequestKey * | key, |
int | id = -1 |
||
) | const |
DBEntry * DBTable::FindNoLock | ( | const DBRequestKey * | key | ) |
|
private |
|
private |
|
virtual |
Implements DBTableBase.
Definition at line 436 of file db_table.cc.
|
virtual |
|
virtual |
Implements DBTableBase.
Definition at line 447 of file db_table.cc.
|
virtual |
|
virtual |
Implements DBTableBase.
Definition at line 428 of file db_table.cc.
|
virtual |
Definition at line 432 of file db_table.cc.
|
inline |
Definition at line 299 of file db_table.h.
|
inline |
Definition at line 291 of file db_table.h.
|
inlinevirtual |
Reimplemented in NextHopTable, HealthCheckTable, VnTable, InterfaceTable, VrfTable, AclTable, AgentQosConfigTable, TagTable, VxLanTable, MirrorTable, PhysicalDeviceTable, PhysicalDeviceVnTable, PolicySetTable, AgentRouteTable, BridgeDomainTable, ForwardingClassTable, MplsTable, CryptTunnelTable, VrfAssignTable, QosQueueTable, MulticastPolicyTable, VmTable, SgTable, PolicyTable, MvpnTable, ErmVpnTable, InetTable, EvpnTable, Inet6Table, InetVpnTable, Inet6VpnTable, and RTargetTable.
Definition at line 195 of file db_table.h.
|
inlinevirtual |
Reimplemented in NextHopTable, HealthCheckTable, VnTable, InterfaceTable, VrfTable, AclTable, AgentQosConfigTable, TagTable, VxLanTable, MirrorTable, PhysicalDeviceTable, PhysicalDeviceVnTable, PolicySetTable, AgentRouteTable, BridgeDomainTable, ForwardingClassTable, MplsTable, CryptTunnelTable, VrfAssignTable, QosQueueTable, MulticastPolicyTable, VmTable, SgTable, PolicyTable, MvpnTable, ErmVpnTable, InetTable, EvpnTable, Inet6Table, InetVpnTable, Inet6VpnTable, and RTargetTable.
Definition at line 198 of file db_table.h.
void DBTable::Init | ( | ) |
|
virtual |
Reimplemented in VrfTable, AgentRouteTable, BgpTable, AgentDBTable, IFMapAgentLinkTable, IFMapServerTable, IFMapAgentTable, and IFMapLinkTable.
Definition at line 516 of file db_table.cc.
|
private |
void DBTable::NotifyAllEntries | ( | ) |
Reimplemented in NextHopTable, AgentOperDBTable, ServiceInstanceTable, VxLanTable, MirrorTable, PhysicalDeviceVnTable, MplsTable, CryptTunnelTable, VrfAssignTable, and PolicyTable.
Definition at line 412 of file db_table.cc.
|
virtual |
Reimplemented in AgentDBTable, AgentRouteTable, MvpnTable, ErmVpnTable, IFMapLinkTable, and IFMapTable.
Definition at line 420 of file db_table.cc.
void DBTable::ReleaseWalker | ( | DBTable::DBTableWalkRef & | walk | ) |
|
inline |
Definition at line 287 of file db_table.h.
|
inline |
Definition at line 295 of file db_table.h.
|
virtual |
Reimplemented from DBTableBase.
Definition at line 507 of file db_table.cc.
|
private |
void DBTable::WalkAgain | ( | DBTable::DBTableWalkRef | walk | ) |
|
private |
|
private |
Definition at line 579 of file db_table.cc.
|
private |
void DBTable::WalkTable | ( | DBTable::DBTableWalkRef | walk | ) |
|
friend |
Definition at line 303 of file db_table.h.
|
static |
Definition at line 181 of file db_table.h.
|
private |
Definition at line 354 of file db_table.h.
|
private |
Definition at line 351 of file db_table.h.
|
private |
Definition at line 352 of file db_table.h.
|
private |
Definition at line 350 of file db_table.h.
|
private |
Definition at line 353 of file db_table.h.