OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
config_listener.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __DNS_CONFIG_LISTENER_H__
6 #define __DNS_CONFIG_LISTENER_H__
7 
8 #include <map>
9 #include <set>
10 #include <vector>
11 #include <boost/scoped_ptr.hpp>
12 #include "base/util.h"
13 #include "db/db_table.h"
14 
15 struct ConfigDelta;
16 class DnsConfigManager;
17 class DB;
18 class DBGraph;
19 class IFMapNode;
20 
21 // Observes events on the DBTables associated with configuration items
23 public:
24  typedef std::vector<ConfigDelta> ChangeList;
25 
26  explicit ConfigListener(DnsConfigManager *manager);
27  virtual ~ConfigListener();
28 
29  void Initialize(DB *database, int ntypes, const char *config_types[]);
30  void Terminate(DB *database);
31 
32  void GetChangeList(ChangeList *change_list);
33 
34 private:
35  typedef std::map<std::string, DBTable::ListenerId> TableMap;
36  typedef std::set<std::string> ChangeSet;
37  class DependencyTracker;
38 
39  void NodeObserver(DBTablePartBase *root, DBEntryBase *db_entry);
40  void LinkObserver(DBTablePartBase *root, DBEntryBase *db_entry);
41 
42  void ChangeListAdd(ChangeList *change_list, IFMapNode *node) const;
43 
44  DB *database();
45  DBGraph *graph();
46 
48  boost::scoped_ptr<DependencyTracker> tracker_;
53 };
54 
55 #endif // __DNS_CONFIG_LISTENER_H__
void LinkObserver(DBTablePartBase *root, DBEntryBase *db_entry)
void ChangeListAdd(ChangeList *change_list, IFMapNode *node) const
void Terminate(DB *database)
ChangeSet change_set_
void Initialize(DB *database, int ntypes, const char *config_types[])
std::vector< ConfigDelta > ChangeList
DBGraph * graph()
TableMap table_map_
ChangeList change_list_
Definition: db.h:24
virtual ~ConfigListener()
void NodeObserver(DBTablePartBase *root, DBEntryBase *db_entry)
void GetChangeList(ChangeList *change_list)
std::map< std::string, DBTable::ListenerId > TableMap
DnsConfigManager * manager_
DISALLOW_COPY_AND_ASSIGN(ConfigListener)
ConfigListener(DnsConfigManager *manager)
std::set< std::string > ChangeSet
boost::scoped_ptr< DependencyTracker > tracker_