Listener
Description
A bound + listening socket. kind records whether stream (TCP) or datagram (UDP) semantics apply. bound is the address that was passed to ListenerOpen (mostly for logging); see ListenerLocalAddr for the actually-bound address when the caller asked the kernel to pick the port.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Socket.h:89:
SocketKind kind;
SocketAddr bound;
} Listener;
///
- In
Socket.h:203:
/// TAGS: Socket, Listener, Bind
///
bool ListenerOpen(Listener *out, SocketKind kind, const SocketAddr *addr, i32 backlog);
///
- In
Socket.h:218:
/// TAGS: Socket, Listener, Address
///
bool ListenerLocalAddr(const Listener *self, SocketAddr *out);
///
- In
Socket.h:232:
/// TAGS: Socket, Listener, Accept
///
bool ListenerAccept(Listener *self, Socket *out_conn);
///
- In
Socket.h:243:
/// TAGS: Socket, Listener, Close
///
void ListenerClose(Listener *self);
// --- Socket (client + accepted) --------------------------------------------
- In
Socket.c:742:
// ---------------------------------------------------------------------------
bool ListenerOpen(Listener *out, SocketKind kind, const SocketAddr *addr, i32 backlog) {
if (!out || !addr) {
LOG_FATAL("ListenerOpen: NULL argument");- In
Socket.c:799:
}
bool ListenerLocalAddr(const Listener *self, SocketAddr *out) {
if (!self || !out) {
LOG_FATAL("ListenerLocalAddr: NULL argument");- In
Socket.c:813:
}
bool ListenerAccept(Listener *self, Socket *out_conn) {
if (!self || !out_conn) {
LOG_FATAL("ListenerAccept: NULL argument");- In
Socket.c:833:
}
void ListenerClose(Listener *self) {
if (!self) {
return;- In
Beam.c:420:
DnsResolverDeinit(&resolver);
Listener listener;
if (!ListenerOpen(&listener, SOCKET_KIND_TCP, &listen_addr, 128)) {
LOG_ERROR("failed to open listener on {}", listen_spec); }
Listener listener;
if (!ListenerOpen(&listener, SOCKET_KIND_TCP, &bind_addr, 16)) {
DefaultAllocatorDeinit(&alloc);- In
Socket.c:22:
Allocator *a = ALLOCATOR_OF(&alloc);
Listener listener;
Socket client = {0};
Socket server = {0};- In
Socket.c:140:
// is the accepted side. Both must be closed by the caller.
typedef struct Pair {
Listener listener;
Socket client;
Socket server;- In
Socket.c:920:
}
Listener listener;
if (!ListenerOpen(&listener, SOCKET_KIND_TCP, &bind_addr, 16)) {
// Port may be in use by a stale TIME_WAIT from a prior run; treat as
- In
Socket.c:956:
}
Listener listener;
if (!ListenerOpen(&listener, SOCKET_KIND_TCP, &bind_addr, 16)) {
DefaultAllocatorDeinit(&alloc);- In
Socket.c:996:
}
Listener listener;
if (!ListenerOpen(&listener, SOCKET_KIND_TCP, &bind_addr, 16)) {
DefaultAllocatorDeinit(&alloc);- In
Socket.c:1043:
MemSet(&bad, 0, sizeof(bad)); // family = SOCKET_FAMILY_UNSPEC
Listener listener;
bool opened = ListenerOpen(&listener, SOCKET_KIND_TCP, &bad, 16);
return opened == false;- In
Socket.c:1070:
}
Listener listener;
if (!ListenerOpen(&listener, SOCKET_KIND_TCP, &bind_addr, 16)) {
return false;- In
Socket.c:1097:
// failure everything opened so far is torn down and false is returned.
// ---------------------------------------------------------------------------
static bool sk4_make_pair(Allocator *a, Listener *listener, Socket *client, Socket *server, SocketAddr *local_out) {
*client = (Socket) {0};
*server = (Socket) {0};- In
Socket.c:1152:
Allocator *a = ALLOCATOR_OF(&alloc);
Listener listener;
Socket client;
Socket server;- In
Socket.c:1215:
Allocator *a = ALLOCATOR_OF(&alloc);
Listener listener;
Socket client;
Socket server;- In
Socket.c:1252:
Allocator *a = ALLOCATOR_OF(&alloc);
Listener listener;
Socket client;
Socket server;- In
Socket.c:1292:
Allocator *a = ALLOCATOR_OF(&alloc);
Listener listener;
Socket client;
Socket server;- In
Socket.c:1347:
Allocator *a = ALLOCATOR_OF(&alloc);
Listener listener;
Socket client;
Socket server;- In
Socket.c:1391:
Allocator *a = ALLOCATOR_OF(&alloc);
Listener listener;
Socket client;
Socket server;- In
Socket.c:1428:
Allocator *a = ALLOCATOR_OF(&alloc);
Listener listener;
Socket client;
Socket server;
Last updated on