SocketPollItem
Description
One slot in a SocketPoll call. Caller fills fd (from a Listener or Socket) and events_requested; SocketPoll writes events_ready back.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Socket.h:120:
u32 events_requested;
u32 events_ready;
} SocketPollItem;
// --- Addressing -------------------------------------------------------------
- In
Socket.h:397:
/// TAGS: Socket, Poll, Multiplexing
///
i32 SocketPoll(SocketPollItem *items, u32 count, i32 timeout_ms);
#endif // MISRA_SYS_SOCKET_H
- In
Socket.c:965:
#endif
i32 SocketPoll(SocketPollItem *items, u32 count, i32 timeout_ms) {
if (!items && count > 0) {
LOG_FATAL("SocketPoll: items is NULL but count > 0");- In
Beam.c:307:
}
SocketPollItem items[2];
char buf[8192];
while (!g_stop) {- In
Beam.c:310:
char buf[8192];
while (!g_stop) {
items[0] = (SocketPollItem) {.fd = a->fd, .events_requested = SOCKET_POLL_READ};
items[1] = (SocketPollItem) {.fd = b->fd, .events_requested = SOCKET_POLL_READ};- In
Beam.c:311:
while (!g_stop) {
items[0] = (SocketPollItem) {.fd = a->fd, .events_requested = SOCKET_POLL_READ};
items[1] = (SocketPollItem) {.fd = b->fd, .events_requested = SOCKET_POLL_READ};
i32 ready = SocketPoll(items, 2, 1000);- In
Beam.c:433:
// accept() blocking forever (and without the EINTR error
// log noise when it does).
SocketPollItem listen_item = {.fd = listener.fd, .events_requested = SOCKET_POLL_READ};
i32 ready = SocketPoll(&listen_item, 1, 1000);
if (ready <= 0) {- In
Socket.c:217:
bool sent = SocketSend(&p.client, payload, 1) == 1;
SocketPollItem item = {0};
item.fd = p.server.fd;
item.events_requested = SOCKET_POLL_READ;- In
Socket.c:252:
bool sent = SocketSend(&p.client, "Y", 1) == 1;
SocketPollItem item = {0};
item.fd = p.server.fd;
item.events_requested = SOCKET_POLL_WRITE; // not READ
- In
Socket.c:283:
}
SocketPollItem item = {0};
item.fd = p.client.fd;
item.events_requested = SOCKET_POLL_WRITE;- In
Socket.c:313:
bool sent = SocketSend(&p.client, "Z", 1) == 1;
SocketPollItem item = {0};
item.fd = p.server.fd;
item.events_requested = SOCKET_POLL_READ; // not WRITE
- In
Socket.c:346:
}
SocketPollItem item = {0};
item.fd = p.server.fd;
item.events_requested = SOCKET_POLL_READ;- In
Socket.c:400:
// once readable it stays readable) so the combined assertion poll below
// is deterministic. Do NOT collapse this back into one poll.
SocketPollItem warm0 = {.fd = p0.server.fd, .events_requested = SOCKET_POLL_READ};
(void)SocketPoll(&warm0, 1, 1000);
SocketPollItem warm2 = {.fd = p2.server.fd, .events_requested = SOCKET_POLL_READ};- In
Socket.c:402:
SocketPollItem warm0 = {.fd = p0.server.fd, .events_requested = SOCKET_POLL_READ};
(void)SocketPoll(&warm0, 1, 1000);
SocketPollItem warm2 = {.fd = p2.server.fd, .events_requested = SOCKET_POLL_READ};
(void)SocketPoll(&warm2, 1, 1000);- In
Socket.c:405:
(void)SocketPoll(&warm2, 1, 1000);
SocketPollItem items[3] = {0};
items[0].fd = p0.server.fd;
items[0].events_requested = SOCKET_POLL_READ;- In
Socket.c:452:
bool sent = SocketSend(&p1.client, "M", 1) == 1;
SocketPollItem items[3] = {0};
items[0].fd = p0.server.fd;
items[0].events_requested = SOCKET_POLL_READ;- In
Socket.c:496:
SocketClose(&p.client);
SocketPollItem item = {0};
item.fd = p.server.fd;
item.events_requested = SOCKET_POLL_READ;- In
Socket.c:553:
bool ok = made == N;
if (ok) {
SocketPollItem items[N] = {0};
for (u32 i = 0; i < N; ++i) {
items[i].fd = pairs[i].server.fd;- In
Socket.c:599:
ok = SocketSend(&pairs[N - 1].client, "L", 1) == 1;
SocketPollItem items[N] = {0};
for (u32 i = 0; i < N; ++i) {
items[i].fd = pairs[i].server.fd;- In
Socket.c:1303:
// Idle server: poll(0ms) must report nothing ready.
SocketPollItem idle = {0};
idle.fd = server.fd;
idle.events_requested = SOCKET_POLL_READ;- In
Socket.c:1314:
ok = ok && SocketSend(&client, payload, n) == (i64)n;
SocketPollItem ready = {0};
ready.fd = server.fd;
ready.events_requested = SOCKET_POLL_READ;
Last updated on