Revised OpenFlow Library  v0.6.0dev
 All Classes Files Functions Variables Friends Groups Pages
cofqueuestatsarray.h
1 /*
2  * cofqueues.h
3  *
4  * Created on: 14.03.2014
5  * Author: andreas
6  */
7 
8 #ifndef COFQUEUESTATSARRAY_H_
9 #define COFQUEUESTATSARRAY_H_
10 
11 #include <iostream>
12 #include <map>
13 
14 #include "rofl/common/openflow/cofqueuestats.h"
15 
16 namespace rofl {
17 namespace openflow {
18 
20 
21  uint8_t ofp_version;
22  std::map<uint32_t, std::map<uint32_t, cofqueue_stats_reply> > array;
23 
24 public:
25 
29  cofqueuestatsarray(uint8_t ofp_version = OFP_VERSION_UNKNOWN);
30 
34  virtual
36 
41 
46  operator= (cofqueuestatsarray const& groups);
47 
51  bool
52  operator== (cofqueuestatsarray const& groups);
53 
58  operator+= (cofqueuestatsarray const& groups);
59 
60 public:
61 
65  virtual size_t
66  length() const;
67 
71  virtual void
72  pack(uint8_t *buf = (uint8_t*)0, size_t buflen = 0);
73 
77  virtual void
78  unpack(uint8_t *buf, size_t buflen);
79 
80 public:
81 
85  size_t
86  size() const { return array.size(); };
87 
91  void
92  clear() { array.clear(); };
93 
97  uint8_t
98  get_version() const { return ofp_version; };
99 
103  void
104  set_version(uint8_t ofp_version) { this->ofp_version = ofp_version; };
105 
109  std::map<uint32_t, std::map<uint32_t, cofqueue_stats_reply> > const&
110  get_queue_stats() const { return array; };
111 
115  std::map<uint32_t, std::map<uint32_t, cofqueue_stats_reply> >&
116  set_queue_stats() { return array; };
117 
118 public:
119 
124  add_queue_stats(uint32_t port_no, uint32_t queue_id);
125 
129  void
130  drop_queue_stats(uint32_t port_no, uint32_t queue_id);
131 
136  set_queue_stats(uint32_t port_no, uint32_t queue_id);
137 
141  cofqueue_stats_reply const&
142  get_queue_stats(uint32_t port_no, uint32_t queue_id) const;
143 
147  bool
148  has_queue_stats(uint32_t port_no, uint32_t queue_id);
149 
150 public:
151 
152  friend std::ostream&
153  operator<< (std::ostream& os, cofqueuestatsarray const& groupstatsarray) {
154  os << "<cofqueuestatsarray #ports:" << (int)groupstatsarray.array.size() << " >" << std::endl;
155  rofl::indent i(2);
156  for (std::map<uint32_t, std::map<uint32_t, cofqueue_stats_reply> >::const_iterator
157  jt = groupstatsarray.array.begin(); jt != groupstatsarray.array.end(); ++jt) {
158  os << rofl::indent(0) << "<portno: " << (int)jt->first << " #queues: " << (int)jt->second.size() << " >" << std::endl;
159  rofl::indent j(2);
160  for (std::map<uint32_t, cofqueue_stats_reply>::const_iterator
161  it = jt->second.begin(); it != jt->second.end(); ++it) {
162  os << it->second;
163  }
164  }
165  return os;
166  }
167 };
168 
169 }; // end of openflow
170 }; // end of rofl
171 
172 
173 
174 #endif /* COFGROUPS_H_ */
Definition: cofqueuestats.h:146
virtual size_t length() const
Definition: cofqueuestatsarray.cc:101
Definition: cofqueuestatsarray.h:19
Definition: logging.h:76