eve.core.windows.loop
Windows Layer 1 event loop built on the selected Layer 0 backend.
This module provides the Windows-specific implementation of EventLoop using performance counters for timers, SetConsoleCtrlHandler for signals, and Windows Event objects for cross-thread wakeups.
enum WindowsSocketBackend
Types 3
enumWindowsSocketBackend : ubyte
Backend selection for Windows socket I/O.
Controls how sockets are polled for readiness on Windows.
WSAPOLLUse WSAPoll for socket readiness polling. This is the legacy fallback option.
IOCP_OVERLAPPEDUse IOCP overlapped I/O for completion notification. Better performance, unified model with pipes/files. This is the default backend.
structEventLoopConfig
Configuration for EventLoop.create.
Fields
size_t watcherCapacityNumber of watcher slots preallocated at loop creation.size_t eventCapacityNumber of native events buffered per backend poll operation.size_t dnsCapacityNumber of asynchronous DNS resolution slots preallocated.EventLoopLimits limitsResource limits configuration.bool delegate(LimitKind kind, size_t current, size_t limit) @safe nothrow onLimitApproachingCalled when a limit is about to be hit (if `LimitAction.callback` is set).void delegate(LimitKind kind) @safe nothrow onLimitExceededCalled when a limit is exceeded and the action is `reject`.WindowsSocketBackend windowsSocketBackendWindows socket backend selection.structEventLoop
Single-threaded readiness event loop for Windows.
Fields
SelectedBackend _pollerWatcherSlot[] _slotsNativeEvent[] _eventsDnsData[] _dnsSlotssize_t _watcherCountsize_t _totalSendQueueBytessize_t _activeConnectionssize_t _openFdsEventLoopConfig _configbool _runningbool _stopRequesteduint _freeHeaduint _dnsFreeHeadToken[] _phaseBufferlong _perfFreqlong _startTimebool _consoleHandlerInstalledMethods
EventLoop create(EventLoopConfig config = EventLoopConfig.init) @trustedCreate a new event loop with fixed-capacity watcher and event buffers.Handle backendHandle() @property const @safe nothrow @nogcReturn the native handle for the active Layer 0 poller.size_t watcherCount() @property const pure @safe nothrow @nogcReport how many watchers are currently registered.bool isRunning() @property const pure @safe nothrow @nogcReport whether `run` or `runToCompletion` is currently executing.WindowsSocketBackend windowsSocketBackend() @property const pure @safe nothrow @nogcGet the configured Windows socket backend.const(EventLoopLimits) limits() @property const @safe nothrow @nogcGet the resource limits configured for the event loop.void updateSendQueueUsage(long delta) @safe nothrow @nogcUpdate the total send queue bytes tracked by the loop.void updateConnectionCount(long delta) @safe nothrow @nogcUpdate the active connection count tracked by the loop.Token registerIo(Handle handle, IoInterest interest, IoWatcherCallback callback) @trusted nothrowRegister an I/O watcher with the selected backend.Token registerTimer(long delayMs, long intervalMs, WatcherCallback callback) @trusted nothrowRegister a one-shot timer watcher.Token registerSignal(Signal signal, SignalWatcherCallback callback) @trusted nothrowRegister a signal watcher.void updateDnsResults(Token token, scope const(IpAddress)[] results, DnsError error) @safe nothrowInternal: Update results for a DNS watcher.const(char) * getDnsHostname(Token token) @safe nothrowInternal: Get the hostname associated with a DNS watcher.Token registerDns(scope const(char)[] host, DnsWatcherCallback callback, CancelToken cancel = CancelToken
.invalid) @trusted nothrowRegister an async DNS resolution watcher.CancelToken getCancelToken(Token token) @safe nothrow @nogcGet the cancellation token associated with a watcher.int updateIo(Token token, IoInterest interest) @trusted nothrowUpdate the interest mask for an existing I/O watcher.bool checkLimit(LimitKind kind, size_t current, size_t limit) @safe nothrowInternal: Check if a resource limit is hit.Nested Templates
WatcherSlotDnsDataFunctions 2
Variables 3
private var
int _errnoThread-local errno for Windows compatibility.
private var
bool _pendingInterruptprivate var
bool _pendingTerminate