47#ifndef __sockpp_socket_h
48#define __sockpp_socket_h
59#if !defined(SOCKPP_SOCKET_T_DEFINED)
62 #define SOCKPP_SOCKET_T_DEFINED
66timeval to_timeval(
const std::chrono::microseconds& dur);
68template<
class Rep,
class Period>
69timeval to_timeval(
const std::chrono::duration<Rep,Period>& dur) {
70 return to_timeval(std::chrono::duration_cast<std::chrono::microseconds>(dur));
136 template <
typename T>
148 template <
typename T>
197 : handle_(sock.handle_), lastErr_(sock.lastErr_) {
233 static socket create(
int domain,
int type,
int protocol=0);
252 explicit operator bool()
const {
301 static std::tuple<socket, socket>
pair(
int domain,
int type,
int protocol=0);
306 void clear(
int val=0) { lastErr_ = val; }
329 std::swap(handle_, sock.handle_);
330 lastErr_ = sock.lastErr_;
364 bool get_option(
int level,
int optname,
void* optval, socklen_t* optlen)
const;
375 template <
typename T>
377 socklen_t len =
sizeof(T);
378 return get_option(level, optname, (
void*) val, &len);
394 bool set_option(
int level,
int optname,
const void* optval, socklen_t optlen);
406 template <
typename T>
408 return set_option(level, optname, (
void*) &val,
sizeof(T));
425 static std::string
error_str(
int errNum);
Definition sock_address.h:109
Definition sock_address.h:65
virtual sa_family_t family() const
Definition sock_address.h:93
socket_t release()
Definition socket.h:311
virtual ~socket()
Definition socket.h:203
bool close_on_err()
Definition socket.h:111
bool operator!() const
Definition socket.h:244
static std::string error_str(int errNum)
Definition socket.cpp:287
socket(socket &&sock) noexcept
Definition socket.h:196
void reset(socket_t h=INVALID_SOCKET)
Definition socket.cpp:175
bool set_option(int level, int optname, const T &val)
Definition socket.h:407
bool check_socket_bool(socket_t ret) const
Definition socket.h:174
void clear(int val=0)
Definition socket.h:306
static void destroy()
Definition socket.cpp:110
socket clone() const
Definition socket.cpp:129
bool shutdown(int how=SHUT_RDWR)
Definition socket.cpp:295
T check_ret(T ret) const
Definition socket.h:137
int last_error() const
Definition socket.h:431
bool is_open() const
Definition socket.h:238
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 & operator=(socket &&sock) noexcept
Definition socket.h:327
bool get_option(int level, int optname, T *val) const
Definition socket.h:376
socket_t handle() const
Definition socket.h:259
socket()
Definition socket.h:183
static socket create(int domain, int type, int protocol=0)
Definition socket.cpp:119
bool set_non_blocking(bool on=true)
Definition socket.cpp:256
bool check_ret_bool(T ret) const
Definition socket.h:149
std::string last_error_str() const
Definition socket.h:437
virtual sa_family_t family() const
Definition socket.h:266
static void initialize()
Definition socket.cpp:97
sock_address_any address() const
Definition socket.cpp:195
socket(socket_t h)
Definition socket.h:190
sock_address_any peer_address() const
Definition socket.cpp:210
bool set_option(int level, int optname, const void *optval, socklen_t optlen)
Definition socket.cpp:243
static int get_last_error()
Definition socket.cpp:71
socket_t check_socket(socket_t ret) const
Definition socket.h:161
bool close()
Definition socket.cpp:303
void set_last_error()
Definition socket.h:127
bool get_option(int level, int optname, void *optval, socklen_t *optlen) const
Definition socket.cpp:224
int socket_t
The OS socket handle.
Definition socket.h:60
const socket_t INVALID_SOCKET
Invalid socket descriptor.
Definition socket.h:61