OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ifmap_server_parser.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __DB_IFMAP_PARSER_H__
6 #define __DB_IFMAP_PARSER_H__
7 
8 #include <list>
9 #include <map>
10 #include <boost/function.hpp>
11 
12 struct AutogenProperty;
13 class DB;
14 struct DBRequest;
15 
16 namespace pugi {
17 class xml_document;
18 class xml_node;
19 } // namespace pugi
20 
22 public:
23  typedef boost::function<
24  bool(const pugi::xml_node &, std::unique_ptr<AutogenProperty> *)
26  typedef std::map<std::string, MetadataParseFn> MetadataParseMap;
27  typedef std::list<struct DBRequest *> RequestList;
28 
29  // Called for each resultItem element in the IF-MAP notification.
30  bool ParseResultItem(const pugi::xml_node &parent, bool add_change,
31  RequestList *list) const;
32 
33  void ParseResults(const pugi::xml_document &xdoc, RequestList *list) const;
34  void MetadataRegister(const std:: string &metadata, MetadataParseFn parser);
35  void MetadataClear(const std::string &module);
36  void SetOrigin(struct DBRequest *result) const;
37 
38  bool Receive(DB *db, const char *data, size_t length,
39  uint64_t sequence_number);
40 
41  static IFMapServerParser *GetInstance(const std::string &module);
42  static void DeleteInstance(const std::string &module);
43 
44 private:
45  typedef std::map<std::string, IFMapServerParser *> ModuleMap;
47 
48  bool ParseMetadata(const pugi::xml_node &node,
49  struct DBRequest *result) const;
50 
52 };
53 
54 #endif
boost::function< bool(const pugi::xml_node &, std::unique_ptr< AutogenProperty > *) > MetadataParseFn
bool ParseMetadata(const pugi::xml_node &node, struct DBRequest *result) const
void MetadataRegister(const std::string &metadata, MetadataParseFn parser)
std::map< std::string, IFMapServerParser * > ModuleMap
void SetOrigin(struct DBRequest *result) const
Definition: db.h:24
static ModuleMap module_map_
void MetadataClear(const std::string &module)
bool Receive(DB *db, const char *data, size_t length, uint64_t sequence_number)
MetadataParseMap metadata_map_
std::map< std::string, MetadataParseFn > MetadataParseMap
void ParseResults(const pugi::xml_document &xdoc, RequestList *list) const
std::list< struct DBRequest * > RequestList
static IFMapServerParser * GetInstance(const std::string &module)
bool ParseResultItem(const pugi::xml_node &parent, bool add_change, RequestList *list) const
static void DeleteInstance(const std::string &module)