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_);
196 return !operator==(lhs, rhs);
Definition sock_address.h:109
sock_address_any(const sock_address &addr)
Definition sock_address.h:152
sock_address_any(const sockaddr *addr, socklen_t n)
Definition sock_address.h:131
sock_address_any()
Definition sock_address.h:123
sockaddr * sockaddr_ptr() override
Definition sock_address.h:171
sock_address_any(const sockaddr_storage &addr, socklen_t n)
Definition sock_address.h:143
socklen_t size() const override
Definition sock_address.h:159
const sockaddr * sockaddr_ptr() const override
Definition sock_address.h:164
Definition sock_address.h:65
virtual sockaddr * sockaddr_ptr()=0
virtual const sockaddr * sockaddr_ptr() const =0
virtual ~sock_address()
Definition sock_address.h:70
virtual socklen_t size() const =0
virtual sa_family_t family() const
Definition sock_address.h:93