OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DBTable Class Referenceabstract

#include <db_table.h>

Inheritance diagram for DBTable:
Collaboration diagram for DBTable:

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
 
- Public Types inherited from DBTableBase
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< DBEntryAllocEntry (const DBRequestKey *key) const =0
 
virtual size_t Hash (const DBEntry *entry) const
 
virtual size_t Hash (const DBRequestKey *key) const
 
virtual DBTablePartitionAllocPartition (int index)
 
virtual void Input (DBTablePartition *tbl_partition, DBClient *client, DBRequest *req)
 
virtual DBEntryAdd (const DBRequest *req)
 
virtual bool OnChange (DBEntry *entry, const DBRequest *req)
 
virtual bool Delete (DBEntry *entry, const DBRequest *req)
 
void NotifyAllEntries ()
 
DBEntryFind (const DBEntry *entry)
 
const DBEntryFind (const DBEntry *entry) const
 
DBEntryFind (const DBRequestKey *key, int id=-1)
 
const DBEntryFind (const DBRequestKey *key, int id=-1) const
 
DBEntryFindNoLock (const DBEntry *entry)
 
DBEntryFindNoLock (const DBRequestKey *key)
 
virtual DBTablePartBaseGetTablePartition (const DBRequestKey *key)
 
virtual const DBTablePartBaseGetTablePartition (const DBRequestKey *key) const
 
virtual DBTablePartBaseGetTablePartition (const DBEntryBase *entry)
 
virtual const DBTablePartBaseGetTablePartition (const DBEntryBase *entry) const
 
virtual DBTablePartBaseGetTablePartition (const int index)
 
virtual const DBTablePartBaseGetTablePartition (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 ()
 
- Public Member Functions inherited from DBTableBase
 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
 
DBdatabase ()
 
const DBdatabase () 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 Public Attributes inherited from DBTableBase
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< TableWalkerwalker_
 
std::vector< DBTablePartition * > partitions_
 
DBTable::DBTableWalkRef walk_ref_
 
int walker_task_id_
 
int max_walk_iteration_to_yield_
 

Friends

class DBTableWalkMgr
 

Detailed Description

Definition at line 167 of file db_table.h.

Member Typedef Documentation

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.

Constructor & Destructor Documentation

DBTable::DBTable ( DB db,
const std::string &  name 
)

Definition at line 362 of file db_table.cc.

DBTable::~DBTable ( )
virtual

Definition at line 383 of file db_table.cc.

Here is the call graph for this function:

Member Function Documentation

DBEntry * DBTable::Add ( const DBRequest req)
virtual

Reimplemented in NextHopTable, AgentOperDBTable, ServiceInstanceTable, VxLanTable, MirrorTable, PhysicalDeviceVnTable, MplsTable, CryptTunnelTable, VrfAssignTable, and PolicyTable.

Definition at line 403 of file db_table.cc.

Here is the call graph for this function:

DBTablePartition * DBTable::AllocPartition ( int  index)
virtual

Reimplemented in AgentDBTable.

Definition at line 393 of file db_table.cc.

DBTable::DBTableWalkRef DBTable::AllocWalker ( WalkFn  walk_fn,
WalkCompleteFn  walk_complete 
)

Definition at line 613 of file db_table.cc.

Here is the call graph for this function:

void DBTable::Change ( DBEntryBase entry)
virtual

Implements DBTableBase.

Definition at line 407 of file db_table.cc.

Here is the call graph for this function:

static void DBTable::db_walker_wait ( )
inlinestaticprivate

Definition at line 308 of file db_table.h.

void DBTable::DBStateClear ( DBTable table,
ListenerId  id 
)
static

Definition at line 550 of file db_table.cc.

Here is the call graph for this function:

bool DBTable::Delete ( DBEntry entry,
const DBRequest req 
)
virtual
DBTable::DISALLOW_COPY_AND_ASSIGN ( DBTable  )
private
DBEntry * DBTable::Find ( const DBEntry entry)

Definition at line 469 of file db_table.cc.

Here is the call graph for this function:

const DBEntry * DBTable::Find ( const DBEntry entry) const

Definition at line 476 of file db_table.cc.

Here is the call graph for this function:

DBEntry * DBTable::Find ( const DBRequestKey key,
int  id = -1 
)

Definition at line 489 of file db_table.cc.

Here is the call graph for this function:

const DBEntry * DBTable::Find ( const DBRequestKey key,
int  id = -1 
) const

Definition at line 497 of file db_table.cc.

Here is the call graph for this function:

DBEntry * DBTable::FindNoLock ( const DBEntry entry)

Definition at line 462 of file db_table.cc.

Here is the call graph for this function:

DBEntry * DBTable::FindNoLock ( const DBRequestKey key)

Definition at line 482 of file db_table.cc.

Here is the call graph for this function:

int DBTable::GetPartitionId ( const DBRequestKey key)
private
int DBTable::GetPartitionId ( const DBEntry entry)
private
DBTablePartBase * DBTable::GetTablePartition ( const DBRequestKey key)
virtual

Implements DBTableBase.

Definition at line 436 of file db_table.cc.

Here is the call graph for this function:

const DBTablePartBase * DBTable::GetTablePartition ( const DBRequestKey key) const
virtual

Definition at line 441 of file db_table.cc.

Here is the call graph for this function:

DBTablePartBase * DBTable::GetTablePartition ( const DBEntryBase entry)
virtual

Implements DBTableBase.

Definition at line 447 of file db_table.cc.

Here is the call graph for this function:

const DBTablePartBase * DBTable::GetTablePartition ( const DBEntryBase entry) const
virtual

Definition at line 453 of file db_table.cc.

Here is the call graph for this function:

DBTablePartBase * DBTable::GetTablePartition ( const int  index)
virtual

Implements DBTableBase.

Definition at line 428 of file db_table.cc.

const DBTablePartBase * DBTable::GetTablePartition ( const int  index) const
virtual

Definition at line 432 of file db_table.cc.

int DBTable::GetWalkerTaskId ( )
inline

Definition at line 299 of file db_table.h.

int DBTable::GetWalkIterationToYield ( )
inline

Definition at line 291 of file db_table.h.

void DBTable::Init ( )

Definition at line 387 of file db_table.cc.

Here is the call graph for this function:

void DBTable::Input ( DBTablePartition tbl_partition,
DBClient client,
DBRequest req 
)
virtual

Reimplemented in VrfTable, AgentRouteTable, BgpTable, AgentDBTable, IFMapAgentLinkTable, IFMapServerTable, IFMapAgentTable, and IFMapLinkTable.

Definition at line 516 of file db_table.cc.

Here is the call graph for this function:

bool DBTable::InvokeWalkCb ( DBTablePartBase part,
DBEntryBase entry 
)
private

Definition at line 637 of file db_table.cc.

Here is the call graph for this function:

void DBTable::NotifyAllEntries ( )

Definition at line 596 of file db_table.cc.

Here is the call graph for this function:

bool DBTable::OnChange ( DBEntry entry,
const DBRequest req 
)
virtual
int DBTable::PartitionCount ( ) const
virtual

Reimplemented in AgentDBTable, AgentRouteTable, MvpnTable, ErmVpnTable, IFMapLinkTable, and IFMapTable.

Definition at line 420 of file db_table.cc.

Here is the call graph for this function:

void DBTable::ReleaseWalker ( DBTable::DBTableWalkRef walk)

Definition at line 619 of file db_table.cc.

Here is the call graph for this function:

void DBTable::SetWalkIterationToYield ( int  count)
inline

Definition at line 287 of file db_table.h.

void DBTable::SetWalkTaskId ( int  task_id)
inline

Definition at line 295 of file db_table.h.

size_t DBTable::Size ( ) const
virtual

Reimplemented from DBTableBase.

Definition at line 507 of file db_table.cc.

void DBTable::StartWalk ( )
private

Definition at line 397 of file db_table.cc.

Here is the call graph for this function:

void DBTable::WalkAgain ( DBTable::DBTableWalkRef  walk)

Definition at line 631 of file db_table.cc.

Here is the call graph for this function:

bool DBTable::WalkCallback ( DBTablePartBase tpart,
DBEntryBase entry 
)
private

Definition at line 571 of file db_table.cc.

Here is the call graph for this function:

void DBTable::WalkCompleteCallback ( DBTableBase tbl_base)
private

Definition at line 579 of file db_table.cc.

void DBTable::WalkDone ( )
private

Definition at line 642 of file db_table.cc.

Here is the call graph for this function:

void DBTable::WalkTable ( DBTable::DBTableWalkRef  walk)

Definition at line 625 of file db_table.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

friend class DBTableWalkMgr
friend

Definition at line 303 of file db_table.h.

Member Data Documentation

const int DBTable::kIterationToYield = 256
static

Definition at line 181 of file db_table.h.

int DBTable::max_walk_iteration_to_yield_
private

Definition at line 354 of file db_table.h.

std::vector<DBTablePartition *> DBTable::partitions_
private

Definition at line 351 of file db_table.h.

DBTable::DBTableWalkRef DBTable::walk_ref_
private

Definition at line 352 of file db_table.h.

std::unique_ptr<TableWalker> DBTable::walker_
private

Definition at line 350 of file db_table.h.

int DBTable::walker_task_id_
private

Definition at line 353 of file db_table.h.


The documentation for this class was generated from the following files: