OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
message_builder.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_BGP_MESSAGE_BUILDER_H_
6 #define SRC_BGP_MESSAGE_BUILDER_H_
7 
8 #include <string>
9 
10 #include "bgp/bgp_rib_policy.h"
11 
12 class BgpMessageBuilder;
13 class BgpRoute;
14 class BgpTable;
16 class IPeerUpdate;
17 class RibOutAttr;
18 class RibOut;
19 
20 class Message {
21 public:
23  virtual ~Message() { }
24  virtual bool Start(const RibOut *ribout, bool cache_routes,
25  const RibOutAttr *roattr, const BgpRoute *route) = 0;
26  virtual bool AddRoute(const BgpRoute *route, const RibOutAttr *roattr) = 0;
27  virtual void Finish() = 0;
28  virtual const uint8_t *GetData(IPeerUpdate *peer_update, size_t *lenp,
29  const std::string **msg_str, std::string *temp) = 0;
30  uint64_t num_reach_routes() const { return num_reach_route_; }
31  uint64_t num_unreach_routes() const { return num_unreach_route_; }
32 
33 protected:
34  uint64_t num_reach_route_;
36 
37  virtual void Reset() {
38  num_reach_route_ = 0;
40  }
41 
42 private:
44 };
45 
47 public:
49  virtual Message *Create() const = 0;
51  virtual ~MessageBuilder(){};
52 
53 private:
56 
58 };
59 
60 #endif // SRC_BGP_MESSAGE_BUILDER_H_
virtual bool AddRoute(const BgpRoute *route, const RibOutAttr *roattr)=0
uint64_t num_reach_routes() const
static MessageBuilder * GetInstance(RibExportPolicy::Encoding encoding)
virtual ~Message()
virtual void Finish()=0
static BgpXmppMessageBuilder * xmpp_message_builder_
uint64_t num_unreach_route_
uint64_t num_unreach_routes() const
virtual ~MessageBuilder()
uint64_t num_reach_route_
virtual const uint8_t * GetData(IPeerUpdate *peer_update, size_t *lenp, const std::string **msg_str, std::string *temp)=0
virtual bool Start(const RibOut *ribout, bool cache_routes, const RibOutAttr *roattr, const BgpRoute *route)=0
virtual void Reset()
DISALLOW_COPY_AND_ASSIGN(Message)
static BgpMessageBuilder * bgp_message_builder_
virtual Message * Create() const =0
DISALLOW_COPY_AND_ASSIGN(MessageBuilder)