// Flags: --expose-internals 'use strict'; const common = require('../common'); if (!common.hasQuic) common.skip('missing quic'); const { strictEqual, } = require('node:assert'); const { internalBinding } = require('internal/test/binding'); const quic = internalBinding('quic'); const { IDX_STATS_ENDPOINT_CREATED_AT, IDX_STATS_ENDPOINT_DESTROYED_AT, IDX_STATS_ENDPOINT_BYTES_RECEIVED, IDX_STATS_ENDPOINT_BYTES_SENT, IDX_STATS_ENDPOINT_PACKETS_RECEIVED, IDX_STATS_ENDPOINT_PACKETS_SENT, IDX_STATS_ENDPOINT_SERVER_SESSIONS, IDX_STATS_ENDPOINT_CLIENT_SESSIONS, IDX_STATS_ENDPOINT_SERVER_BUSY_COUNT, IDX_STATS_ENDPOINT_RETRY_COUNT, IDX_STATS_ENDPOINT_VERSION_NEGOTIATION_COUNT, IDX_STATS_ENDPOINT_STATELESS_RESET_COUNT, IDX_STATS_ENDPOINT_IMMEDIATE_CLOSE_COUNT, IDX_STATS_ENDPOINT_COUNT, IDX_STATE_ENDPOINT_BOUND, IDX_STATE_ENDPOINT_BOUND_SIZE, IDX_STATE_ENDPOINT_RECEIVING, IDX_STATE_ENDPOINT_RECEIVING_SIZE, IDX_STATE_ENDPOINT_LISTENING, IDX_STATE_ENDPOINT_LISTENING_SIZE, IDX_STATE_ENDPOINT_CLOSING, IDX_STATE_ENDPOINT_CLOSING_SIZE, IDX_STATE_ENDPOINT_BUSY, IDX_STATE_ENDPOINT_BUSY_SIZE, IDX_STATE_ENDPOINT_PENDING_CALLBACKS, IDX_STATE_ENDPOINT_PENDING_CALLBACKS_SIZE, } = quic; const endpoint = new quic.Endpoint({}); const state = new DataView(endpoint.state); strictEqual(IDX_STATE_ENDPOINT_BOUND_SIZE, 1); strictEqual(IDX_STATE_ENDPOINT_RECEIVING_SIZE, 1); strictEqual(IDX_STATE_ENDPOINT_LISTENING_SIZE, 1); strictEqual(IDX_STATE_ENDPOINT_CLOSING_SIZE, 1); strictEqual(IDX_STATE_ENDPOINT_BUSY_SIZE, 1); strictEqual(IDX_STATE_ENDPOINT_PENDING_CALLBACKS_SIZE, 8); strictEqual(state.getUint8(IDX_STATE_ENDPOINT_BOUND), 0); strictEqual(state.getUint8(IDX_STATE_ENDPOINT_RECEIVING), 0); strictEqual(state.getUint8(IDX_STATE_ENDPOINT_LISTENING), 0); strictEqual(state.getUint8(IDX_STATE_ENDPOINT_CLOSING), 0); strictEqual(state.getUint8(IDX_STATE_ENDPOINT_BUSY), 0); strictEqual(state.getBigUint64(IDX_STATE_ENDPOINT_PENDING_CALLBACKS), 0n); endpoint.markBusy(true); strictEqual(state.getUint8(IDX_STATE_ENDPOINT_BUSY), 1); endpoint.markBusy(false); strictEqual(state.getUint8(IDX_STATE_ENDPOINT_BUSY), 0); const stats = new BigUint64Array(endpoint.stats); strictEqual(stats[IDX_STATS_ENDPOINT_CREATED_AT], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_DESTROYED_AT], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_BYTES_RECEIVED], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_BYTES_SENT], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_PACKETS_RECEIVED], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_PACKETS_SENT], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_SERVER_SESSIONS], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_CLIENT_SESSIONS], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_SERVER_BUSY_COUNT], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_RETRY_COUNT], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_VERSION_NEGOTIATION_COUNT], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_STATELESS_RESET_COUNT], 0n); strictEqual(stats[IDX_STATS_ENDPOINT_IMMEDIATE_CLOSE_COUNT], 0n); strictEqual(IDX_STATS_ENDPOINT_COUNT, 13);