47#ifndef __sockpp_stream_socket_h
48#define __sockpp_stream_socket_h
123 base::operator=(std::move(rhs));
147 virtual ssize_t
read(
void *buf,
size_t n);
157 virtual ssize_t
read_n(
void *buf,
size_t n);
163 ssize_t
read(
const std::vector<iovec>& ranges);
179 template<
class Rep,
class Period>
181 return read_timeout(std::chrono::duration_cast<std::chrono::microseconds>(to));
189 virtual ssize_t
write(
const void *buf,
size_t n);
197 virtual ssize_t
write_n(
const void *buf,
size_t n);
205 virtual ssize_t
write(
const std::string& s) {
206 return write_n(s.data(), s.size());
213 virtual ssize_t
write(
const std::vector<iovec> &ranges);
229 template<
class Rep,
class Period>
231 return write_timeout(std::chrono::duration_cast<std::chrono::microseconds>(to));
244template <
typename ADDR>
271 :
base(std::move(sock)) {}
277 :
base(std::move(sock)) {}
307 static std::tuple<stream_socket_tmpl, stream_socket_tmpl>
pair(
int protocol=0) {
309 return std::make_tuple<stream_socket_tmpl, stream_socket_tmpl>(
socket_t release()
Definition socket.h:311
socket clone() const
Definition socket.cpp:129
static std::tuple< socket, socket > pair(int domain, int type, int protocol=0)
Definition socket.cpp:146
socket_t handle() const
Definition socket.h:259
socket()
Definition socket.h:183
sock_address_any address() const
Definition socket.cpp:195
sock_address_any peer_address() const
Definition socket.cpp:210
Definition stream_socket.h:246
ADDR addr_t
Definition stream_socket.h:254
stream_socket_tmpl(socket_t handle)
Definition stream_socket.h:264
addr_t address() const
Definition stream_socket.h:318
static std::tuple< stream_socket_tmpl, stream_socket_tmpl > pair(int protocol=0)
Definition stream_socket.h:307
stream_socket_tmpl create(int protocol=0)
Definition stream_socket.h:292
stream_socket_tmpl()
Definition stream_socket.h:258
static constexpr sa_family_t ADDRESS_FAMILY
Definition stream_socket.h:252
stream_socket_tmpl(stream_socket &&sock)
Definition stream_socket.h:270
stream_socket_tmpl(stream_socket_tmpl &&sock)
Definition stream_socket.h:276
addr_t peer_address() const
Definition stream_socket.h:324
stream_socket_tmpl & operator=(stream_socket_tmpl &&rhs)
Definition stream_socket.h:283
Definition stream_socket.h:63
bool write_timeout(const std::chrono::duration< Rep, Period > &to)
Definition stream_socket.h:230
static stream_socket create(int domain, int protocol=0)
Definition stream_socket.cpp:50
stream_socket & operator=(stream_socket &&rhs)
Definition stream_socket.h:122
bool read_timeout(const std::chrono::duration< Rep, Period > &to)
Definition stream_socket.h:180
virtual bool write_timeout(const std::chrono::microseconds &to)
virtual ssize_t write_n(const void *buf, size_t n)
Definition stream_socket.cpp:154
stream_socket(stream_socket &&sock)
Definition stream_socket.h:96
virtual bool read_timeout(const std::chrono::microseconds &to)
stream_socket(socket_t handle)
Definition stream_socket.h:91
virtual ssize_t write(const void *buf, size_t n)
Definition stream_socket.cpp:140
static socket_t create_handle(int domain)
Definition stream_socket.h:75
virtual ssize_t read_n(void *buf, size_t n)
Definition stream_socket.cpp:77
virtual ssize_t write(const std::string &s)
Definition stream_socket.h:205
stream_socket clone() const
Definition stream_socket.h:137
static constexpr int COMM_TYPE
Definition stream_socket.h:81
stream_socket()
Definition stream_socket.h:85
virtual ssize_t read(void *buf, size_t n)
Definition stream_socket.cpp:62
int socket_t
The OS socket handle.
Definition socket.h:60