Commit Graph

30 Commits

Author SHA1 Message Date
Max Kellermann
491cc8f54d net/SocketDescriptor: add {Read,Write}NoWait()
It was surprising that Read() was non-blocking, but there was no
blocking version of it.  Let's make the non-blocking behavior explicit
and change Read() to be blocking.

In order to find existing callers easily with compiler errors, this
also refactors Read()/Write() to take a std::span parameter.
2023-09-27 11:39:55 +02:00
Max Kellermann
8ca6606323 net/SocketDescriptor: move code to Receive(), Send() 2023-09-27 10:16:21 +02:00
Max Kellermann
53ec02d5e9 net/SocketDescriptor: decouple from FileDescriptor on Windows
On Windows, a socket is not a file descriptor; it is a different beast
(and anyway, Windows doesn't have file descriptors).
2023-03-29 10:12:50 +02:00
Max Kellermann
148aca23be use SPDX IDs, replacing the long copyright headers 2023-03-06 14:59:48 +01:00
Max Kellermann
bbc82a9892 io/FileDescriptor, net/SocketDescriptor: make lots of methods "const"
Only the file descriptor value itself is const, but the file itself
may be readable/writable.
2022-11-09 19:19:20 +01:00
Max Kellermann
3456b1e50d use std::size_t 2021-02-12 18:39:28 +01:00
Max Kellermann
155fc8fa5a include cleanup 2020-07-23 16:26:18 +02:00
Rosen Penev
edc4989d9c
change errno.h to cerrno
The former is deprecated by C++14. It's also functionally the same.

From the standard:

19.4
The header<cerrno>is described in Table 43. Its contents are the same as
the POSIX header<errno.h>,except that errno shall be defined as a macro.
[Note: The intent is to remain in close alignment with the POSIX
standard.] A separate errno value shall be provided for each thread.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-12 15:51:16 -07:00
Max Kellermann
7d98145ea8 net/AddressInfo: include Features.hxx instead of config.h 2019-08-26 20:26:40 +02:00
Max Kellermann
20b6e0d684 net/SocketDescriptor: add SetTcpUserTimeout() 2019-02-27 23:22:12 +01:00
Max Kellermann
5d7dd12f7a net/SocketDescriptor: add multicast methods 2018-08-21 11:37:19 +02:00
Max Kellermann
21783ff5f7 net/SocketDescriptor: remove unnecessary SO_REUSEPORT check 2018-08-21 11:35:29 +02:00
Max Kellermann
fd923d5d96 net/SocketDescriptor: add Shutdown() 2018-08-21 11:31:58 +02:00
Max Kellermann
ebf607eef8 net/SocketDescriptor: fix SOCK_NONBLOCK flag in CreateSocketPairNonBlock() 2018-08-21 11:27:15 +02:00
Max Kellermann
e092eadd8d net/SocketDescriptor: add "noexcept" 2018-08-21 11:08:34 +02:00
Max Kellermann
ba3b422ce5 net/SocketDescriptor: make accept4() mandatory on Linux 2018-08-21 10:53:54 +02:00
Max Kellermann
0ebba73cb8 net/SocketDescriptor: add method GetPeerCredentials() 2018-08-20 16:11:17 +02:00
Max Kellermann
50c7337965 net/SocketDescriptor: add GetType(), IsStream() 2018-08-20 16:06:58 +02:00
Max Kellermann
6246d36fe6 Merge branch 'v0.20.x' 2017-12-16 20:56:06 +01:00
Max Kellermann
614b3634d4 net/SocketDescriptor: add AcceptNonBlock() overload without address 2017-08-11 09:07:35 +02:00
Max Kellermann
b234f4307f net/SocketDescriptor: AcceptNonBlock() enables non-blocking even if SOCK_NONBLOCK is unavailable 2017-08-11 09:04:38 +02:00
Max Kellermann
e38c213ee0 net/SocketDescriptor: check HAVE_ACCEPT4 2017-08-11 09:04:10 +02:00
Max Kellermann
1f47dc990d net/SocketDescriptor: add method SetKeepAlive() 2017-08-10 19:25:02 +02:00
Max Kellermann
d2cdaa041c net/SocketDescriptor: SO_REUSEADDR is portable 2017-08-10 13:23:14 +02:00
Max Kellermann
79e75bfbb9 net/SocketDescriptor: cast setsockopt() value to "const char *" for Windows 2017-08-10 13:21:24 +02:00
Max Kellermann
73b15c1bee net/SocketDescriptor: socketpair() is unavailable on Windows 2017-08-10 13:19:47 +02:00
Max Kellermann
b180604422 net/SocketDescriptor: implement SetNonBlocking() on Windows 2017-08-10 13:18:23 +02:00
Max Kellermann
fab12ef241 net/SocketDescriptor: call SetNonBlocking() on Linux if SOCK_NONBLOCK unavailable 2017-08-10 13:16:25 +02:00
Max Kellermann
9259e989a4 net/SocketDescriptors: fix includes for Windows 2017-08-10 13:13:19 +02:00
Max Kellermann
817e912025 net/SocketDescriptor: specialization of FileDescriptor for network sockets 2017-08-10 13:12:13 +02:00