Table of Contents

Class IosQuicDiagnostics

Namespace
VpnHood.Net.Quic.Ios
Assembly
VpnHood.Net.Quic.Ios.dll

Provides the iOS QUIC client's investigation counters and its [VHQUIC] open and close log lines, as TcpStackDiagnostics does for the TCP stack. A stream, a connection, a send or a teardown is counted only when it begins while Enabled, so production pays nothing; its end is then counted whatever the log level is by then, so no count goes below zero or stays up.

public static class IosQuicDiagnostics
Inheritance
IosQuicDiagnostics
Inherited Members

Remarks

Only the diagnostic counters live here. The load-bearing jetsam brake input is deliberately NOT gated: the live phys_footprint is published always-on through VhMemory.Instance by the iOS footprint sampler, not by this class. The host's memory probe reads the public snapshot properties below; it does not own these counters.

Off in production; there is no dedicated switch — Enabled is computed from VhLogger.MinLogLevel, so below-Information logging (e.g. the /log:debug DebugCommand in the app UI, flowing to the Extension via ClientOptions.LogServiceOptions) enables all the iOS diagnostics together.

Properties

Enabled

Gets a value indicating whether the counters move and the lines are logged: while the log level is below Information.

public static bool Enabled { get; }

Property Value

bool

Remarks

What was open, or being sent, before the log level dropped is never counted, so the counts may then be under the real ones; they are exact for everything that began since.

LiveConnectionCount

Gets the number of open QUIC connections, each a native connection group.

public static int LiveConnectionCount { get; }

Property Value

int

LiveStreamCount

Gets the number of open QUIC streams, each a native NWConnection.

public static int LiveStreamCount { get; }

Property Value

int

OutstandingSendBytes

Gets the bytes of the sends under way: counted just before a send goes to nw_connection_send, until its completion callback, a failure before it is submitted, or the stream's disposal.

public static long OutstandingSendBytes { get; }

Property Value

long

Methods

TakeMaxStreamCancelMs()

Returns the longest QUIC stream teardown since the last call, and starts the next period at 0, whether or not Enabled.

public static long TakeMaxStreamCancelMs()

Returns

long

The longest teardown, in milliseconds; 0 when none was timed.