OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
config_json_parser.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef ctrlplane_config_json_parser_h
6 #define ctrlplane_config_json_parser_h
7 
8 #include <list>
9 #include <map>
10 #include <string>
11 
13 
14 #include "base/queue_task.h"
15 #include "ifmap/ifmap_table.h"
16 #include "ifmap/ifmap_origin.h"
17 
18 #include "rapidjson/document.h"
20 #include "ifmap/ifmap_server.h"
21 
22 #include <boost/function.hpp>
23 
24 struct AutogenProperty;
26 
28 public:
29  typedef boost::function<
30  bool(const contrail_rapidjson::Value &, std::unique_ptr<AutogenProperty> *)
32  typedef std::map<std::string, MetadataParseFn> MetadataParseMap;
33  typedef std::list<struct DBRequest *> RequestList;
34 
37 
38  virtual void SetupGraphFilter();
39  virtual void EndOfConfig();
40 
41  void MetadataRegister(const std::string &metadata, MetadataParseFn parser);
42  void MetadataClear(const std::string &module);
43  virtual bool Receive(const ConfigCass2JsonAdapter &adapter,
44  bool add_change);
45  void ifmap_server_set(IFMapServer *ifmap_server) {
46  ifmap_server_ = ifmap_server;
47  };
48 
49 private:
50  void SetupObjectFilter();
53  bool ParseDocument(const ConfigCass2JsonAdapter &adapter,
54  IFMapOrigin::Origin origin, RequestList *req_list,
55  IFMapTable::RequestKey *key, bool add_change) const;
56  bool ParseNameType(const ConfigCass2JsonAdapter &adapter,
57  IFMapTable::RequestKey *key) const;
58  bool ParseProperties(const ConfigCass2JsonAdapter &adapter,
60  RequestList *req_list, bool add_change) const;
61  bool ParseOneProperty(const ConfigCass2JsonAdapter &adapter,
62  const contrail_rapidjson::Value &key_node,
63  const contrail_rapidjson::Value &value_node,
65  RequestList *req_list, bool add_change) const;
66  bool ParseLinks(const ConfigCass2JsonAdapter &adapter,
68  RequestList *req_list, bool add_change) const;
69  bool ParseRef(const ConfigCass2JsonAdapter &adapter,
70  const contrail_rapidjson::Value &ref_entry,
71  IFMapOrigin::Origin origin, const std::string &refer,
72  const IFMapTable::RequestKey &key,
73  RequestList *req_list, bool add_change) const;
74  bool ParseOneRef(const ConfigCass2JsonAdapter &adapter,
75  const contrail_rapidjson::Value &arr,
77  RequestList *req_list, const std::string &key_str,
78  size_t pos, bool add_change) const;
79  void EnqueueListToTables(RequestList *req_list) const;
81  const std::string &neigh_type, const std::string &neigh_name,
82  const std::string &metaname, std::unique_ptr<AutogenProperty> &pvalue,
83  const IFMapTable::RequestKey &key, bool add_change,
84  RequestList *req_list) const;
85 
89 };
90 
91 #endif // ctrlplane_config_json_parser_h
MetadataParseMap metadata_map_
std::map< std::string, MetadataParseFn > MetadataParseMap
boost::function< bool(const contrail_rapidjson::Value &, std::unique_ptr< AutogenProperty > *) > MetadataParseFn
bool ParseOneProperty(const ConfigCass2JsonAdapter &adapter, const contrail_rapidjson::Value &key_node, const contrail_rapidjson::Value &value_node, const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, RequestList *req_list, bool add_change) const
void ifmap_server_set(IFMapServer *ifmap_server)
bool ParseOneRef(const ConfigCass2JsonAdapter &adapter, const contrail_rapidjson::Value &arr, const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, RequestList *req_list, const std::string &key_str, size_t pos, bool add_change) const
void MetadataRegister(const std::string &metadata, MetadataParseFn parser)
IFMapServer * ifmap_server_
bool ParseDocument(const ConfigCass2JsonAdapter &adapter, IFMapOrigin::Origin origin, RequestList *req_list, IFMapTable::RequestKey *key, bool add_change) const
bool ParseLinks(const ConfigCass2JsonAdapter &adapter, const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, RequestList *req_list, bool add_change) const
bool ParseRef(const ConfigCass2JsonAdapter &adapter, const contrail_rapidjson::Value &ref_entry, IFMapOrigin::Origin origin, const std::string &refer, const IFMapTable::RequestKey &key, RequestList *req_list, bool add_change) const
bool ParseProperties(const ConfigCass2JsonAdapter &adapter, const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, RequestList *req_list, bool add_change) const
void SetupSchemaWrapperPropertyInfo()
void EnqueueListToTables(RequestList *req_list) const
IFMapTable::RequestKey * CloneKey(const IFMapTable::RequestKey &src) const
bool ParseNameType(const ConfigCass2JsonAdapter &adapter, IFMapTable::RequestKey *key) const
virtual bool Receive(const ConfigCass2JsonAdapter &adapter, bool add_change)
void MetadataClear(const std::string &module)
std::list< struct DBRequest * > RequestList
virtual void SetupGraphFilter()
void InsertRequestIntoQ(IFMapOrigin::Origin origin, const std::string &neigh_type, const std::string &neigh_name, const std::string &metaname, std::unique_ptr< AutogenProperty > &pvalue, const IFMapTable::RequestKey &key, bool add_change, RequestList *req_list) const
virtual void EndOfConfig()