OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sandesh_message_builder.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __SANDESH_MESSAGE_BUILDER_H__
6 #define __SANDESH_MESSAGE_BUILDER_H__
7 
8 #include <pugixml/pugixml.hpp>
9 
10 #include <sandesh/sandesh_types.h>
11 #include <sandesh/sandesh.h>
12 
14 public:
16  size_(0) {
17  }
18  virtual ~SandeshMessage();
19  virtual bool Parse(const uint8_t *data, size_t size) = 0;
20  virtual const std::string ExtractMessage() const = 0;
21  const SandeshHeader& GetHeader() const { return header_; }
22  const std::string& GetMessageType() const { return message_type_; }
23  const size_t GetSize() const { return size_; }
24 
25 protected:
26  SandeshHeader header_;
27  std::string message_type_;
28  size_t size_;
29 };
30 
32 public:
34  virtual ~SandeshXMLMessage();
35  virtual bool Parse(const uint8_t *data, size_t size);
36  virtual const std::string ExtractMessage() const;
37  const pugi::xml_node& GetMessageNode() const { return message_node_; }
38 
39 protected:
40  bool ParseHeader(const pugi::xml_node& root,
41  SandeshHeader& header);
42 
43  pugi::xml_document xdoc_;
44  pugi::xml_node message_node_;
45 
46 private:
48 };
49 
51 public:
53  virtual ~SandeshSyslogMessage();
54  virtual bool Parse(const uint8_t *data, size_t size);
55  void SetHeader(const SandeshHeader &header) { header_ = header; }
56 
57 private:
59 };
60 
62 public:
63  enum Type {
64  XML,
66  };
67  virtual SandeshMessage *Create(const uint8_t *data, size_t size) const = 0;
69 };
70 
72 public:
74  virtual SandeshMessage *Create(const uint8_t *data, size_t size) const;
76 
77 private:
80 };
81 
83 public:
85  virtual SandeshMessage *Create(const uint8_t *data, size_t size) const;
87 
88 private:
91 };
92 
93 #endif // __SANDESH_MESSAGE_BUILDER_H__
virtual SandeshMessage * Create(const uint8_t *data, size_t size) const =0
DISALLOW_COPY_AND_ASSIGN(SandeshXMLMessageBuilder)
virtual bool Parse(const uint8_t *data, size_t size)=0
static SandeshSyslogMessageBuilder * GetInstance()
virtual bool Parse(const uint8_t *data, size_t size)
const size_t GetSize() const
DISALLOW_COPY_AND_ASSIGN(SandeshXMLMessage)
static SandeshXMLMessageBuilder instance_
virtual SandeshMessage * Create(const uint8_t *data, size_t size) const
pugi::xml_document xdoc_
const pugi::xml_node & GetMessageNode() const
uint8_t type
Definition: load_balance.h:109
virtual const std::string ExtractMessage() const =0
pugi::xml_node message_node_
virtual bool Parse(const uint8_t *data, size_t size)
static SandeshSyslogMessageBuilder instance_
static SandeshXMLMessageBuilder * GetInstance()
virtual const std::string ExtractMessage() const
void SetHeader(const SandeshHeader &header)
DISALLOW_COPY_AND_ASSIGN(SandeshSyslogMessage)
bool ParseHeader(const pugi::xml_node &root, SandeshHeader &header)
virtual SandeshMessage * Create(const uint8_t *data, size_t size) const
DISALLOW_COPY_AND_ASSIGN(SandeshSyslogMessageBuilder)
static SandeshMessageBuilder * GetInstance(Type type)
const std::string & GetMessageType() const
const SandeshHeader & GetHeader() const