28 typedef int socklen_t;
29#elif defined(OS_POSIX)
31 static SOCKET
const INVALID_SOCKET = -1;
35 enum class State { Invalid, Listening, Connected };
48 void close()
override;
51 inline bool valid()
const {
return (_handle != INVALID_SOCKET); }
57 inline SOCKET native_handle()
const {
return _handle; }
60 inline bool listening()
const {
return (_state == State::Listening); }
61 inline bool connected()
const override {
62 return (_state == State::Connected);
69 bool listen(std::string
const &address, std::string
const &port);
71 bool listen(std::string
const &path,
bool abstract =
false);
73 std::unique_ptr<Socket> accept();
74 bool connect(std::string
const &host, std::string
const &port);
77 bool getSocketInfo(
struct sockaddr_storage *ss)
const;
80 std::string address()
const;
81 std::string port()
const;
84 std::string error()
const;
87 bool wait(
int ms = -1)
override;
90 bool setNonBlocking();
93 ssize_t send(
void const *buffer,
size_t length)
override;
94 ssize_t receive(
void *buffer,
size_t length)
override;