Net++
A class-based C++ encapsulation over the POSIX Sockets API
Loading...
Searching...
No Matches
endpoint_info.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "networking.hpp"
4#include <cstdint>
5#include <string>
6#include <netdb.h>
7#include <sys/socket.h>
8
9inline namespace endpoint_info {
10
11class Address {
12public:
14 raw_address_{},
15 ip_domain_{ networking::domain::unspecified_domain } {};
16
17 Address(sockaddr *raw_address);
18
19 Address(std::string &address, std::string &port);
20
21 const sockaddr *c_addr() const;
22 int32_t ip_domain() const;
23 void print_address() const;
24
25private:
26 sockaddr_storage raw_address_;
27 int32_t ip_domain_;
28};
29
31public:
32 AddressInfo() = delete;
33 AddressInfo(addrinfo *raw_node) :
34 address_{ Address(raw_node->ai_addr) },
35 ip_domain_{raw_node->ai_family},
36 socket_type_{ raw_node->ai_socktype },
37 protocol_{ raw_node->ai_protocol },
38 canonical_name_{ raw_node->ai_canonname == nullptr ? "No name" : raw_node->ai_canonname} {};
39
40
41 void print_address_info() const;
42 addrinfo c_addrinfo() const;
43
44 int domain() const;
45 bool is_udp() const;
46 bool is_tcp() const;
47 int socket_type() const;
48 int protocol() const;
49 int create_socket() const;
50 int connect() const;
51
52
53private:
54 const Address address_;
55 const int32_t ip_domain_;
56 const int32_t socket_type_;
57 const int32_t protocol_{};
58 const std::string canonical_name_;
59};
60
61} // namespace endpoint_info
Definition endpoint_info.hpp:30
AddressInfo(addrinfo *raw_node)
Definition endpoint_info.hpp:33
addrinfo c_addrinfo() const
void print_address_info() const
Definition endpoint_info.hpp:11
Address(sockaddr *raw_address)
void print_address() const
Address(std::string &address, std::string &port)
int32_t ip_domain() const
Address()
Definition endpoint_info.hpp:13
const sockaddr * c_addr() const
Definition endpoint_info.hpp:9
Definition networking.hpp:7