Socket representation.
It is not thread-safe to concurrently read from socket. It is not thread-safe to concurrently write to socket. However it is safe to concurrently read and write into socket:
for (char expected_data = 0; expected_data <= 100; ++expected_data) {
char c = 0;
EXPECT_EQ(1, recvfrom.bytes_received);
EXPECT_EQ(expected_data, c);
}
});
for (char send_data = 0; send_data <= 100; ++send_data) {
const auto bytes_sent = socket.
SendAllTo(addr, &send_data, 1, deadline);
EXPECT_EQ(bytes_sent, 1);
}
read_task.Get();
- Examples
- samples/tcp_full_duplex_service/main.cpp, and samples/tcp_service/main.cpp.
Definition at line 37 of file socket.hpp.
|
|
| Socket ()=default |
| | Constructs an invalid socket.
|
| |
|
| Socket (AddrDomain, SocketType) |
| | Constructs a socket for the address domain of specified type.
|
| |
| | Socket (int fd, AddrDomain domain=AddrDomain::kUnspecified) |
| | Adopts an existing socket for specified address domain.
|
| |
| | operator bool () const |
| | Whether the socket is valid.
|
| |
| bool | IsValid () const override |
| | Whether the socket is valid.
|
| |
| void | Connect (const Sockaddr &, Deadline) |
| | Connects the socket to a specified endpoint.
|
| |
| void | Bind (const Sockaddr &) |
| | Binds the socket to the specified endpoint.
|
| |
|
void | Listen (int backlog=SOMAXCONN) |
| | Starts listening for connections on a specified socket (must be bound).
|
| |
| bool | WaitReadable (Deadline) override |
| |
| bool | WaitWriteable (Deadline) override |
| |
| size_t | RecvSome (void *buf, size_t len, Deadline deadline) |
| | Receives at least one byte from the socket.
|
| |
| size_t | RecvAll (void *buf, size_t len, Deadline deadline) |
| | Receives exactly len bytes from the socket.
|
| |
| std::optional< size_t > | RecvNoblock (void *buf, size_t len) |
| | Receives up to len bytes from the stream.
|
| |
| size_t | SendAll (std::initializer_list< IoData > list, Deadline deadline) |
| | Sends a buffer vector to the socket.
|
| |
| size_t | WriteAll (std::initializer_list< IoData > list, Deadline deadline) override |
| |
| size_t | SendAll (const IoData *list, std::size_t list_size, Deadline deadline) |
| | Sends exactly list_size IoData to the socket.
|
| |
| size_t | SendAll (const struct iovec *list, std::size_t list_size, Deadline deadline) |
| | Sends exactly list_size iovec to the socket.
|
| |
| size_t | SendAll (const void *buf, size_t len, Deadline deadline) |
| | Sends exactly len bytes to the socket.
|
| |
| Socket | Accept (Deadline) |
| | Accepts a connection from a listening socket.
|
| |
| RecvFromResult | RecvSomeFrom (void *buf, size_t len, Deadline deadline) |
| | Receives at least one byte from the socket, returning source address.
|
| |
| size_t | SendAllTo (const Sockaddr &dest_addr, const void *buf, size_t len, Deadline deadline) |
| | Sends exactly len bytes to the specified address via the socket.
|
| |
|
int | Fd () const |
| | File descriptor corresponding to this socket.
|
| |
|
const Sockaddr & | Getpeername () |
| | Address of a remote peer.
|
| |
|
const Sockaddr & | Getsockname () |
| | Local socket address.
|
| |
|
int | Release () &&noexcept |
| | Releases file descriptor and invalidates the socket.
|
| |
| void | Close () |
| | Closes and invalidates the socket.
|
| |
|
int | GetOption (int layer, int optname) const |
| | Retrieves a socket option.
|
| |
|
void | SetOption (int layer, int optname, int optval) |
| | Sets a socket option.
|
| |
| size_t | ReadSome (void *buf, size_t len, Deadline deadline) override |
| | Receives at least one byte from the socket.
|
| |
| size_t | ReadAll (void *buf, size_t len, Deadline deadline) override |
| | Receives exactly len bytes from the socket.
|
| |
| std::optional< size_t > | ReadNoblock (void *buf, size_t len) override |
| | Receives up to len bytes from the stream.
|
| |
| size_t | WriteAll (const void *buf, size_t len, Deadline deadline) override |
| | Writes exactly len bytes to the socket.
|
| |
| ReadableBase & | GetReadableBase () |
| |
| WritableBase & | GetWritableBase () |
| |
| impl::ContextAccessor * | TryGetContextAccessor () |
| | For internal use only.
|
| |
| impl::ContextAccessor * | TryGetContextAccessor () |
| | For internal use only.
|
| |