47#ifndef __sockpp_datagram_socket_h
48#define __sockpp_datagram_socket_h
72 static socket_t create_handle(
int domain) {
100 :
base(std::move(other)) {}
107 base::operator=(std::move(rhs));
136 return check_ret(::sendto(
handle(),
reinterpret_cast<const char*
>(buf),
int(n),
151 return send_to(s.data(), s.length(), flags, addr);
161 return send_to(buf, n, 0, addr);
170 return send_to(s.data(), s.length(), 0, addr);
180 ssize_t
send(
const void* buf,
size_t n,
int flags=0) {
195 ssize_t
send(
const std::string& s,
int flags=0) {
196 return send(s.data(), s.length(), flags);
226 ssize_t
recv(
void* buf,
size_t n,
int flags=0) {
244template <
typename ADDR>
277 :
base(std::move(other)) {}
284 base::operator=(std::move(rhs));
300 static std::tuple<datagram_socket_tmpl, datagram_socket_tmpl>
pair(
int protocol=0) {
302 return std::make_tuple<datagram_socket_tmpl, datagram_socket_tmpl>(
335 ssize_t
send_to(
const void* buf,
size_t n,
int flags,
const ADDR& addr) {
345 ssize_t
send_to(
const std::string& s,
int flags,
const ADDR& addr) {
355 ssize_t
send_to(
const void* buf,
size_t n,
const ADDR& addr) {
364 ssize_t
send_to(
const std::string& s,
const ADDR& addr) {
376 ssize_t
recv_from(
void* buf,
size_t n,
int flags, ADDR* srcAddr) {
387 ssize_t
recv_from(
void* buf,
size_t n, ADDR* srcAddr=
nullptr) {
Definition datagram_socket.h:246
ssize_t send_to(const void *buf, size_t n, int flags, const ADDR &addr)
Definition datagram_socket.h:335
ADDR addr_t
Definition datagram_socket.h:254
datagram_socket_tmpl & operator=(datagram_socket_tmpl &&rhs)
Definition datagram_socket.h:283
static constexpr sa_family_t ADDRESS_FAMILY
Definition datagram_socket.h:252
ssize_t recv_from(void *buf, size_t n, int flags, ADDR *srcAddr)
Definition datagram_socket.h:376
datagram_socket_tmpl(const ADDR &addr)
Definition datagram_socket.h:271
static std::tuple< datagram_socket_tmpl, datagram_socket_tmpl > pair(int protocol=0)
Definition datagram_socket.h:300
ssize_t send_to(const std::string &s, const ADDR &addr)
Definition datagram_socket.h:364
datagram_socket_tmpl(socket_t handle)
Definition datagram_socket.h:266
ssize_t recv_from(void *buf, size_t n, ADDR *srcAddr=nullptr)
Definition datagram_socket.h:387
datagram_socket_tmpl()
Definition datagram_socket.h:260
ssize_t send_to(const std::string &s, int flags, const ADDR &addr)
Definition datagram_socket.h:345
bool bind(const ADDR &addr)
Definition datagram_socket.h:313
ssize_t send_to(const void *buf, size_t n, const ADDR &addr)
Definition datagram_socket.h:355
bool connect(const ADDR &addr)
Definition datagram_socket.h:323
datagram_socket_tmpl(datagram_socket_tmpl &&other)
Definition datagram_socket.h:276
Definition datagram_socket.h:63
ssize_t send(const std::string &s, int flags=0)
Definition datagram_socket.h:195
datagram_socket & operator=(datagram_socket &&rhs)
Definition datagram_socket.h:106
ssize_t send_to(const void *buf, size_t n, int flags, const sock_address &addr)
Definition datagram_socket.h:134
ssize_t send_to(const void *buf, size_t n, const sock_address &addr)
Definition datagram_socket.h:160
ssize_t send_to(const std::string &s, int flags, const sock_address &addr)
Definition datagram_socket.h:150
static constexpr int COMM_TYPE
Definition datagram_socket.h:78
datagram_socket()
Definition datagram_socket.h:83
datagram_socket(socket_t handle)
Definition datagram_socket.h:89
ssize_t recv(void *buf, size_t n, int flags=0)
Definition datagram_socket.h:226
ssize_t recv_from(void *buf, size_t n, int flags, sock_address *srcAddr=nullptr)
Definition datagram_socket.cpp:62
ssize_t recv_from(void *buf, size_t n, sock_address *srcAddr=nullptr)
Definition datagram_socket.h:216
bool connect(const sock_address &addr)
Definition datagram_socket.h:119
ssize_t send(const void *buf, size_t n, int flags=0)
Definition datagram_socket.h:180
datagram_socket(datagram_socket &&other)
Definition datagram_socket.h:99
ssize_t send_to(const std::string &s, const sock_address &addr)
Definition datagram_socket.h:169
Definition sock_address.h:65
virtual sockaddr * sockaddr_ptr()=0
virtual socklen_t size() const =0
T check_ret(T ret) const
Definition socket.h:137
static std::tuple< socket, socket > pair(int domain, int type, int protocol=0)
Definition socket.cpp:146
bool bind(const sock_address &addr)
Definition socket.cpp:187
socket_t handle() const
Definition socket.h:259
socket()
Definition socket.h:183
bool check_ret_bool(T ret) const
Definition socket.h:149
int socket_t
The OS socket handle.
Definition socket.h:60