diff --git a/lib/internal/quic/core.js b/lib/internal/quic/core.js index a3dd40a206..dcf485c7a1 100644 --- a/lib/internal/quic/core.js +++ b/lib/internal/quic/core.js @@ -162,6 +162,16 @@ const { IDX_QUIC_STREAM_STATS_BYTES_RECEIVED, IDX_QUIC_STREAM_STATS_BYTES_SENT, IDX_QUIC_STREAM_STATS_MAX_OFFSET, + IDX_QUIC_SOCKET_STATS_CREATED_AT, + IDX_QUIC_SOCKET_STATS_BOUND_AT, + IDX_QUIC_SOCKET_STATS_LISTEN_AT, + IDX_QUIC_SOCKET_STATS_BYTES_RECEIVED, + IDX_QUIC_SOCKET_STATS_BYTES_SENT, + IDX_QUIC_SOCKET_STATS_PACKETS_RECEIVED, + IDX_QUIC_SOCKET_STATS_PACKETS_IGNORED, + IDX_QUIC_SOCKET_STATS_PACKETS_SENT, + IDX_QUIC_SOCKET_STATS_SERVER_SESSIONS, + IDX_QUIC_SOCKET_STATS_CLIENT_SESSIONS, ERR_INVALID_REMOTE_TRANSPORT_PARAMS, ERR_INVALID_TLS_SESSION_TICKET, NGTCP2_PATH_VALIDATION_RESULT_FAILURE, @@ -1337,39 +1347,39 @@ class QuicSocket extends EventEmitter { get duration() { const now = process.hrtime.bigint(); const stats = this.#stats || this[kHandle].stats; - return now - stats[0]; + return now - stats[IDX_QUIC_SOCKET_STATS_CREATED_AT]; } get boundDuration() { const now = process.hrtime.bigint(); const stats = this.#stats || this[kHandle].stats; - return now - stats[1]; + return now - stats[IDX_QUIC_SOCKET_STATS_BOUND_AT]; } get listenDuration() { const now = process.hrtime.bigint(); const stats = this.#stats || this[kHandle].stats; - return now - stats[2]; + return now - stats[IDX_QUIC_SOCKET_STATS_LISTEN_AT]; } get bytesReceived() { const stats = this.#stats || this[kHandle].stats; - return stats[3]; + return stats[IDX_QUIC_SOCKET_STATS_BYTES_RECEIVED]; } get bytesSent() { const stats = this.#stats || this[kHandle].stats; - return stats[4]; + return stats[IDX_QUIC_SOCKET_STATS_BYTES_SENT]; } get packetsReceived() { const stats = this.#stats || this[kHandle].stats; - return stats[5]; + return stats[IDX_QUIC_SOCKET_STATS_PACKETS_RECEIVED]; } get packetsSent() { const stats = this.#stats || this[kHandle].stats; - return stats[6]; + return stats[IDX_QUIC_SOCKET_STATS_PACKETS_SENT]; } get serverBusy() { @@ -1378,12 +1388,12 @@ class QuicSocket extends EventEmitter { get serverSessions() { const stats = this.#stats || this[kHandle].stats; - return stats[7]; + return stats[IDX_QUIC_SOCKET_STATS_SERVER_SESSIONS]; } get clientSessions() { const stats = this.#stats || this[kHandle].stats; - return stats[8]; + return stats[IDX_QUIC_SOCKET_STATS_CLIENT_SESSIONS]; } setDiagnosticPacketLoss(options) { diff --git a/src/node_quic.cc b/src/node_quic.cc index 6aa57d8160..3c7bfab3fa 100755 --- a/src/node_quic.cc +++ b/src/node_quic.cc @@ -223,6 +223,17 @@ void Initialize(Local target, NODE_DEFINE_CONSTANT(constants, IDX_QUIC_STREAM_STATS_BYTES_SENT); NODE_DEFINE_CONSTANT(constants, IDX_QUIC_STREAM_STATS_MAX_OFFSET); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_CREATED_AT); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_BOUND_AT); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_LISTEN_AT); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_BYTES_RECEIVED); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_BYTES_SENT); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_PACKETS_RECEIVED); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_PACKETS_IGNORED); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_PACKETS_SENT); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_SERVER_SESSIONS); + NODE_DEFINE_CONSTANT(constants, IDX_QUIC_SOCKET_STATS_CLIENT_SESSIONS); + NODE_DEFINE_CONSTANT(constants, IDX_HTTP3_QPACK_MAX_TABLE_CAPACITY); NODE_DEFINE_CONSTANT(constants, IDX_HTTP3_QPACK_BLOCKED_STREAMS); NODE_DEFINE_CONSTANT(constants, IDX_HTTP3_MAX_HEADER_LIST_SIZE); diff --git a/src/node_quic_socket.h b/src/node_quic_socket.h index ad40174c3c..724f4a56e4 100644 --- a/src/node_quic_socket.h +++ b/src/node_quic_socket.h @@ -44,6 +44,19 @@ enum QuicSocketOptions : uint32_t { QUICSOCKET_OPTIONS_VALIDATE_ADDRESS_LRU = 0x2, }; +enum QuicSocketStatsIdx : int { + IDX_QUIC_SOCKET_STATS_CREATED_AT, + IDX_QUIC_SOCKET_STATS_BOUND_AT, + IDX_QUIC_SOCKET_STATS_LISTEN_AT, + IDX_QUIC_SOCKET_STATS_BYTES_RECEIVED, + IDX_QUIC_SOCKET_STATS_BYTES_SENT, + IDX_QUIC_SOCKET_STATS_PACKETS_RECEIVED, + IDX_QUIC_SOCKET_STATS_PACKETS_IGNORED, + IDX_QUIC_SOCKET_STATS_PACKETS_SENT, + IDX_QUIC_SOCKET_STATS_SERVER_SESSIONS, + IDX_QUIC_SOCKET_STATS_CLIENT_SESSIONS +}; + class QuicSocket; // This is the generic interface for objects that control QuicSocket