Revised OpenFlow Library  v0.6.0dev
 All Classes Files Functions Variables Friends Groups Pages
caddrinfos.h
1 /*
2  * caddrinfos.h
3  *
4  * Created on: 12.06.2014
5  * Author: andreas
6  */
7 
8 #ifndef CADDRINFOS_H_
9 #define CADDRINFOS_H_
10 
11 #include <sys/types.h>
12 #include <sys/socket.h>
13 #include <netdb.h>
14 #include <string.h>
15 
16 #include <map>
17 #include <string>
18 
19 #include "rofl/common/caddrinfo.h"
20 
21 namespace rofl {
22 
23 class caddrinfos {
24 public:
25 
29  caddrinfos() {};
30 
34  ~caddrinfos() {};
35 
36 public:
37 
41  const std::string&
42  get_node() const { return node; };
43 
47  std::string&
48  set_node() { return node; };
49 
53  void
54  set_node(const std::string& node) { this->node = node; };
55 
59  const std::string&
60  get_service() const { return service; };
61 
65  std::string&
66  set_service() { return service; };
67 
71  void
72  set_service(const std::string& service) { this->service = service; };
73 
77  const caddrinfo&
78  get_ai_hints() const { return hints; };
79 
83  caddrinfo&
84  set_ai_hints() { return hints; };
85 
89  const std::map<unsigned int, caddrinfo>&
90  get_addr_infos() const { return ais; };
91 
92 public:
93 
97  void
98  resolve();
99 
103  void
104  clear() { ais.clear(); };
105 
109  unsigned int
110  size() const { return ais.size(); };
111 
115  caddrinfo&
116  add_addr_info(unsigned int index);
117 
121  caddrinfo&
122  set_addr_info(unsigned int index);
123 
127  void
128  drop_addr_info(unsigned int index);
129 
133  const caddrinfo&
134  get_addr_info(unsigned int index) const;
135 
139  bool
140  has_addr_info(unsigned int index) const;
141 
142 public:
143 
144  friend std::ostream&
145  operator<< (std::ostream& os, const caddrinfos& dns) {
146  os << rofl::indent(0) << "<caddrinfos "
147  << "node:" << dns.get_node() << " "
148  << "service:" << dns.get_service() << " "
149  << "#infos:" << dns.size() << " "
150  << ">" << std::endl;
151  rofl::indent i(2);
152  for (std::map<unsigned int, caddrinfo>::const_iterator
153  it = dns.get_addr_infos().begin(); it != dns.get_addr_infos().end(); ++it) {
154  os << it->second;
155  }
156  return os;
157  };
158 
159 private:
160 
161  std::string node;
162  std::string service;
163  caddrinfo hints;
164 
165  std::map<unsigned int, caddrinfo> ais;
166 };
167 
168 }; // end of namespace rofl
169 
170 #endif /* CADDRINFOS_H_ */
Definition: caddrinfos.h:23
Definition: caddrinfo.h:36
Definition: logging.h:76