47 #ifndef __sockpp_sock_address_h 48 #define __sockpp_sock_address_h 77 virtual socklen_t
size()
const =0;
95 return p ? p->sa_family : AF_UNSPEC;
111 sockaddr_storage addr_;
116 static constexpr
size_t MAX_SZ =
sizeof(sockaddr_storage);
133 throw std::length_error(
"Address length out of range");
134 std::memcpy(&addr_, addr, sz_ = n);
145 throw std::length_error(
"Address length out of range");
146 std::memcpy(&addr_, &addr, sz_ = n);
159 socklen_t
size()
const override {
return sz_; }
165 return reinterpret_cast<const sockaddr*
>(&addr_);
172 return reinterpret_cast<sockaddr*
>(&addr_);
203 #endif // __sockpp_sock_address_h Generic socket address.
Definition: sock_address.h:64
virtual sockaddr * sockaddr_ptr()=0
Gets a pointer to this object cast to a sockaddr.
virtual ~sock_address()
Virtual destructor.
Definition: sock_address.h:70
Generic socket address.
Definition: sock_address.h:108
sock_address_any()
Constructs an empty address.
Definition: sock_address.h:123
bool operator==(const sock_address &lhs, const sock_address &rhs)
Determines if the two objects refer to the same address.
Definition: sock_address.h:183
sockaddr * sockaddr_ptr() override
Gets a pointer to this object cast to a sockaddr.
Definition: sock_address.h:171
const sockaddr * sockaddr_ptr() const override
Gets a pointer to this object cast to a sockaddr.
Definition: sock_address.h:164
Definition: acceptor.h:51
bool operator!=(const sock_address &lhs, const sock_address &rhs)
Determines if the two objects refer to the different address.
Definition: sock_address.h:195
socklen_t size() const override
Gets the size of the address.
Definition: sock_address.h:159
virtual socklen_t size() const =0
Gets the size of this structure.
sock_address_any(const sockaddr *addr, socklen_t n)
Constructs an address.
Definition: sock_address.h:131
virtual sa_family_t family() const
Gets the network family of the address.
Definition: sock_address.h:93
sock_address_any(const sock_address &addr)
Copies another address to this one.
Definition: sock_address.h:152
sock_address_any(const sockaddr_storage &addr, socklen_t n)
Constructs an address.
Definition: sock_address.h:143