Function poll [src]

Prototype

pub fn poll( gpa: Allocator, comptime StreamEnum: type, files: PollFiles(StreamEnum), ) Poller(StreamEnum)

Parameters

gpa: AllocatorStreamEnum: typefiles: PollFiles(StreamEnum)

Source

pub fn poll( gpa: Allocator, comptime StreamEnum: type, files: PollFiles(StreamEnum), ) Poller(StreamEnum) { const enum_fields = @typeInfo(StreamEnum).@"enum".fields; var result: Poller(StreamEnum) = .{ .gpa = gpa, .readers = @splat(.failing), .poll_fds = undefined, .windows = if (is_windows) .{ .first_read_done = false, .overlapped = [1]windows.OVERLAPPED{ std.mem.zeroes(windows.OVERLAPPED), } ** enum_fields.len, .small_bufs = undefined, .active = .{ .count = 0, .handles_buf = undefined, .stream_map = undefined, }, } else {}, }; inline for (enum_fields, 0..) |field, i| { if (is_windows) { result.windows.active.handles_buf[i] = @field(files, field.name).handle; } else { result.poll_fds[i] = .{ .fd = @field(files, field.name).handle, .events = posix.POLL.IN, .revents = undefined, }; } } return result; }