Guitar
inetresolver.h
Go to the documentation of this file.
1 #ifndef INETRESOLVER_H
2 #define INETRESOLVER_H
3 
4 #include <vector>
5 #include <string>
6 
7 class InetResolver {
8 public:
9  enum Type {
11  IN4,
12  IN6,
13  };
14  typedef void _in_addr;
15  typedef void _in6_addr;
16  struct Addr {
18  std::vector<std::vector<char>> addr;
19  size_t size() const
20  {
21  return addr.size();
22  }
23  bool empty() const
24  {
25  return size() == 0;
26  }
27  operator bool () const
28  {
29  return !empty();
30  }
31  _in_addr const *to_in4(size_t i) const
32  {
33  return reinterpret_cast<_in_addr const *>(addr[i].data());
34  }
35  _in6_addr const *to_in6(size_t i) const
36  {
37  return reinterpret_cast<_in6_addr const *>(addr[i].data());
38  }
39  std::string to_string(size_t i = 0) const;
40  };
41  bool resolve(char const *name, Type type, Addr *out);
42 };
43 
44 
45 #endif // INETRESOLVER_H
Definition: inetresolver.h:7
void _in6_addr
Definition: inetresolver.h:15
void _in_addr
Definition: inetresolver.h:14
bool resolve(char const *name, Type type, Addr *out)
Definition: inetresolver.cpp:18
Type
Definition: inetresolver.h:9
@ IN4
Definition: inetresolver.h:11
@ UNDEFINED
Definition: inetresolver.h:10
@ IN6
Definition: inetresolver.h:12
Definition: inetresolver.h:16
bool empty() const
Definition: inetresolver.h:23
Type type
Definition: inetresolver.h:17
std::string to_string(size_t i=0) const
Definition: inetresolver.cpp:67
std::vector< std::vector< char > > addr
Definition: inetresolver.h:18
size_t size() const
Definition: inetresolver.h:19
_in_addr const * to_in4(size_t i) const
Definition: inetresolver.h:31
_in6_addr const * to_in6(size_t i) const
Definition: inetresolver.h:35