OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ovsdb_object.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_VNSW_AGENT_OVS_TOR_AGENT_OVSDB_CLIENT_OVSDB_OBJECT_H_
6 #define SRC_VNSW_AGENT_OVS_TOR_AGENT_OVSDB_CLIENT_OVSDB_OBJECT_H_
7 
8 #include <boost/intrusive_ptr.hpp>
9 
10 #include <db/db_entry.h>
11 #include <ksync/ksync_entry.h>
12 #include <ksync/ksync_index.h>
13 #include <ksync/ksync_object.h>
14 
15 #include <ovsdb_client_idl.h>
16 
17 namespace OVSDB {
18 class OvsdbDBEntry;
19 
20 class OvsdbObject : public KSyncObject {
21 public:
23  virtual ~OvsdbObject();
24 
26  // Trigger delete of object table
27  void DeleteTable(void);
28 
29  virtual void EmptyTable(void);
30 
32 
33 protected:
35 
36  // derived class can override to take action on delete table.
37  virtual void DeleteTableDone(void) {}
38 
39 private:
41 };
42 
43 class OvsdbDBObject : public KSyncDBObject {
44 public:
45  static const uint32_t StaleEntryCleanupTimer = 300000; // 5 mins
46  static const uint32_t StaleEntryYeildTimer = 100; // 100 ms
47  static const uint16_t StaleEntryDeletePerIteration = 32;
48 
49  OvsdbDBObject(OvsdbClientIdl *idl, bool init_stale_entry_cleanup);
51  bool init_stale_entry_cleanup);
52  virtual ~OvsdbDBObject();
53 
54  // API to register db table, if not already registered.
55  virtual void OvsdbRegisterDBTable(DBTable *tbl);
56 
57  // API to trigger db table walk to resync the entries.
58  void OvsdbStartResyncWalk();
59 
60  void NotifyAddOvsdb(OvsdbDBEntry *key, struct ovsdb_idl_row *row);
61  void NotifyDeleteOvsdb(OvsdbDBEntry *key, struct ovsdb_idl_row *row);
62 
63  virtual OvsdbDBEntry *AllocOvsEntry(struct ovsdb_idl_row *row) { return NULL;}
64  bool DBWalkNotify(DBTablePartBase *partition, DBEntryBase *entry);
65  void DBWalkDone(DBTableBase *partition);
66 
67  virtual Agent *agent() const;
68 
69  // Trigger delete of object table
70  void DeleteTable(void);
71 
72  virtual void EmptyTable(void);
73  virtual DBFilterResp OvsdbDBEntryFilter(const DBEntry *entry,
74  const OvsdbDBEntry *ovsdb_entry);
75 
77 protected:
78  DBFilterResp DBEntryFilter(const DBEntry *entry, const KSyncDBEntry *ksync);
79 
80  // derived class can override to take action on delete table.
81  virtual void DeleteTableDone(void) {}
82 
84 
85 private:
86  friend class OvsdbDBEntry;
90 };
91 };
92 
93 #endif //SRC_VNSW_AGENT_OVS_TOR_AGENT_OVSDB_CLIENT_OVSDB_OBJECT_H_
94 
OvsdbClientIdl * client_idl()
Definition: ovsdb_object.h:76
OvsdbDBObject(OvsdbClientIdl *idl, bool init_stale_entry_cleanup)
Definition: ovsdb_object.cc:44
OvsdbClientIdlPtr client_idl_
Definition: ovsdb_object.h:83
virtual void EmptyTable(void)
OvsdbObject(OvsdbClientIdl *idl)
Definition: ovsdb_object.cc:16
virtual void OvsdbRegisterDBTable(DBTable *tbl)
Definition: ovsdb_object.cc:76
virtual OvsdbDBEntry * AllocOvsEntry(struct ovsdb_idl_row *row)
Definition: ovsdb_object.h:63
DISALLOW_COPY_AND_ASSIGN(OvsdbDBObject)
virtual void DeleteTableDone(void)
Definition: ovsdb_object.h:81
KSyncEntry * FindActiveEntry(KSyncEntry *key)
Definition: ovsdb_object.cc:23
DBTable::DBTableWalkRef walk_ref_
Definition: ovsdb_object.h:87
DISALLOW_COPY_AND_ASSIGN(OvsdbObject)
DBFilterResp DBEntryFilter(const DBEntry *entry, const KSyncDBEntry *ksync)
static const uint16_t StaleEntryDeletePerIteration
Definition: ovsdb_object.h:47
void DBWalkDone(DBTableBase *partition)
virtual DBFilterResp OvsdbDBEntryFilter(const DBEntry *entry, const OvsdbDBEntry *ovsdb_entry)
Definition: agent.h:358
boost::intrusive_ptr< OvsdbClientIdl > OvsdbClientIdlPtr
void NotifyDeleteOvsdb(OvsdbDBEntry *key, struct ovsdb_idl_row *row)
bool DBWalkNotify(DBTablePartBase *partition, DBEntryBase *entry)
void DeleteTable(void)
Definition: ovsdb_object.cc:31
virtual void DeleteTableDone(void)
Definition: ovsdb_object.h:37
virtual Agent * agent() const
virtual ~OvsdbDBObject()
Definition: ovsdb_object.cc:72
virtual void EmptyTable(void)
Definition: ovsdb_object.cc:38
virtual ~OvsdbObject()
Definition: ovsdb_object.cc:20
static const uint32_t StaleEntryYeildTimer
Definition: ovsdb_object.h:46
OvsdbClientIdlPtr client_idl_
Definition: ovsdb_object.h:34
boost::intrusive_ptr< DBTableWalk > DBTableWalkRef
Definition: db_table.h:169
static const uint32_t StaleEntryCleanupTimer
Definition: ovsdb_object.h:45
void NotifyAddOvsdb(OvsdbDBEntry *key, struct ovsdb_idl_row *row)
Definition: ovsdb_object.cc:92
OvsdbClientIdl * client_idl()
Definition: ovsdb_object.h:31