@kungfu-tech/libnode-win32-x64 22.22.3-kf.0 → 22.22.3-kf.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node/include/acorn_version.h +6 -0
- package/dist/node/include/aliased_buffer-inl.h +244 -0
- package/dist/node/include/aliased_buffer.h +206 -0
- package/dist/node/include/aliased_struct-inl.h +54 -0
- package/dist/node/include/aliased_struct.h +63 -0
- package/dist/node/include/amaro_version.h +6 -0
- package/dist/node/include/async_context_frame.h +33 -0
- package/dist/node/include/async_wrap-inl.h +96 -0
- package/dist/node/include/async_wrap.h +243 -0
- package/dist/node/include/base_object-inl.h +335 -0
- package/dist/node/include/base_object.h +342 -0
- package/dist/node/include/base_object_types.h +74 -0
- package/dist/node/include/blob_serializer_deserializer-inl.h +385 -0
- package/dist/node/include/blob_serializer_deserializer.h +132 -0
- package/dist/node/include/callback_queue-inl.h +97 -0
- package/dist/node/include/callback_queue.h +79 -0
- package/dist/node/include/cares_wrap.h +447 -0
- package/dist/node/include/cjs_module_lexer_version.h +6 -0
- package/dist/node/include/cleanup_queue-inl.h +36 -0
- package/dist/node/include/cleanup_queue.h +79 -0
- package/dist/node/include/compile_cache.h +104 -0
- package/dist/node/include/connect_wrap.h +26 -0
- package/dist/node/include/connection_wrap.h +30 -0
- package/dist/node/include/cppgc/allocation.h +310 -0
- package/dist/node/include/cppgc/common.h +28 -0
- package/dist/node/include/cppgc/cross-thread-persistent.h +466 -0
- package/dist/node/include/cppgc/custom-space.h +97 -0
- package/dist/node/include/cppgc/default-platform.h +67 -0
- package/dist/node/include/cppgc/ephemeron-pair.h +30 -0
- package/dist/node/include/cppgc/explicit-management.h +100 -0
- package/dist/node/include/cppgc/garbage-collected.h +106 -0
- package/dist/node/include/cppgc/heap-consistency.h +309 -0
- package/dist/node/include/cppgc/heap-handle.h +48 -0
- package/dist/node/include/cppgc/heap-state.h +82 -0
- package/dist/node/include/cppgc/heap-statistics.h +120 -0
- package/dist/node/include/cppgc/heap.h +202 -0
- package/dist/node/include/cppgc/internal/api-constants.h +87 -0
- package/dist/node/include/cppgc/internal/atomic-entry-flag.h +48 -0
- package/dist/node/include/cppgc/internal/base-page-handle.h +45 -0
- package/dist/node/include/cppgc/internal/caged-heap-local-data.h +121 -0
- package/dist/node/include/cppgc/internal/caged-heap.h +68 -0
- package/dist/node/include/cppgc/internal/compiler-specific.h +38 -0
- package/dist/node/include/cppgc/internal/finalizer-trait.h +93 -0
- package/dist/node/include/cppgc/internal/gc-info.h +148 -0
- package/dist/node/include/cppgc/internal/logging.h +50 -0
- package/dist/node/include/cppgc/internal/member-storage.h +256 -0
- package/dist/node/include/cppgc/internal/name-trait.h +137 -0
- package/dist/node/include/cppgc/internal/persistent-node.h +214 -0
- package/dist/node/include/cppgc/internal/pointer-policies.h +243 -0
- package/dist/node/include/cppgc/internal/write-barrier.h +487 -0
- package/dist/node/include/cppgc/liveness-broker.h +78 -0
- package/dist/node/include/cppgc/macros.h +35 -0
- package/dist/node/include/cppgc/member.h +629 -0
- package/dist/node/include/cppgc/name-provider.h +65 -0
- package/dist/node/include/cppgc/object-size-trait.h +58 -0
- package/dist/node/include/cppgc/persistent.h +377 -0
- package/dist/node/include/cppgc/platform.h +163 -0
- package/dist/node/include/cppgc/prefinalizer.h +75 -0
- package/dist/node/include/cppgc/process-heap-statistics.h +36 -0
- package/dist/node/include/cppgc/sentinel-pointer.h +39 -0
- package/dist/node/include/cppgc/source-location.h +16 -0
- package/dist/node/include/cppgc/testing.h +106 -0
- package/dist/node/include/cppgc/trace-trait.h +128 -0
- package/dist/node/include/cppgc/type-traits.h +271 -0
- package/dist/node/include/cppgc/visitor.h +504 -0
- package/dist/node/include/crypto/crypto_aes.h +88 -0
- package/dist/node/include/crypto/crypto_bio.h +193 -0
- package/dist/node/include/crypto/crypto_cipher.h +293 -0
- package/dist/node/include/crypto/crypto_clienthello-inl.h +90 -0
- package/dist/node/include/crypto/crypto_clienthello.h +131 -0
- package/dist/node/include/crypto/crypto_common.h +64 -0
- package/dist/node/include/crypto/crypto_context.h +171 -0
- package/dist/node/include/crypto/crypto_dh.h +126 -0
- package/dist/node/include/crypto/crypto_dsa.h +52 -0
- package/dist/node/include/crypto/crypto_ec.h +164 -0
- package/dist/node/include/crypto/crypto_hash.h +91 -0
- package/dist/node/include/crypto/crypto_hkdf.h +61 -0
- package/dist/node/include/crypto/crypto_hmac.h +92 -0
- package/dist/node/include/crypto/crypto_keygen.h +299 -0
- package/dist/node/include/crypto/crypto_keys.h +392 -0
- package/dist/node/include/crypto/crypto_pbkdf2.h +74 -0
- package/dist/node/include/crypto/crypto_random.h +124 -0
- package/dist/node/include/crypto/crypto_rsa.h +136 -0
- package/dist/node/include/crypto/crypto_scrypt.h +85 -0
- package/dist/node/include/crypto/crypto_sig.h +165 -0
- package/dist/node/include/crypto/crypto_spkac.h +21 -0
- package/dist/node/include/crypto/crypto_timing.h +20 -0
- package/dist/node/include/crypto/crypto_tls.h +305 -0
- package/dist/node/include/crypto/crypto_util.h +725 -0
- package/dist/node/include/crypto/crypto_x509.h +140 -0
- package/dist/node/include/dataqueue/queue.h +306 -0
- package/dist/node/include/debug_utils-inl.h +278 -0
- package/dist/node/include/debug_utils.h +196 -0
- package/dist/node/include/diagnosticfilename-inl.h +33 -0
- package/dist/node/include/embedded_data.h +17 -0
- package/dist/node/include/encoding_binding.h +61 -0
- package/dist/node/include/env-inl.h +984 -0
- package/dist/node/include/env.h +1287 -0
- package/dist/node/include/env_properties.h +540 -0
- package/dist/node/include/handle_wrap.h +123 -0
- package/dist/node/include/histogram-inl.h +107 -0
- package/dist/node/include/histogram.h +279 -0
- package/dist/node/include/inspector/io_agent.h +30 -0
- package/dist/node/include/inspector/main_thread_interface.h +116 -0
- package/dist/node/include/inspector/network_agent.h +94 -0
- package/dist/node/include/inspector/network_inspector.h +45 -0
- package/dist/node/include/inspector/network_requests_buffer.h +195 -0
- package/dist/node/include/inspector/network_resource_manager.h +29 -0
- package/dist/node/include/inspector/node_json.h +24 -0
- package/dist/node/include/inspector/node_string.h +101 -0
- package/dist/node/include/inspector/protocol_helper.h +27 -0
- package/dist/node/include/inspector/runtime_agent.h +41 -0
- package/dist/node/include/inspector/target_agent.h +75 -0
- package/dist/node/include/inspector/tracing_agent.h +43 -0
- package/dist/node/include/inspector/worker_agent.h +40 -0
- package/dist/node/include/inspector/worker_inspector.h +124 -0
- package/dist/node/include/inspector_agent.h +165 -0
- package/dist/node/include/inspector_io.h +78 -0
- package/dist/node/include/inspector_profiler.h +149 -0
- package/dist/node/include/inspector_socket.h +60 -0
- package/dist/node/include/inspector_socket_server.h +110 -0
- package/dist/node/include/js_native_api.h +607 -0
- package/dist/node/include/js_native_api_types.h +226 -0
- package/dist/node/include/js_native_api_v8.h +485 -0
- package/dist/node/include/js_native_api_v8_internals.h +45 -0
- package/dist/node/include/js_stream.h +52 -0
- package/dist/node/include/json_utils.h +172 -0
- package/dist/node/include/large_pages/node_large_page.h +34 -0
- package/dist/node/include/libplatform/libplatform-export.h +29 -0
- package/dist/node/include/libplatform/libplatform.h +112 -0
- package/dist/node/include/libplatform/v8-tracing.h +333 -0
- package/dist/node/include/memory_tracker-inl.h +359 -0
- package/dist/node/include/memory_tracker.h +289 -0
- package/dist/node/include/module_wrap.h +216 -0
- package/dist/node/include/node.h +1593 -0
- package/dist/node/include/node_api.h +265 -0
- package/dist/node/include/node_api_internals.h +48 -0
- package/dist/node/include/node_api_types.h +56 -0
- package/dist/node/include/node_binding.h +161 -0
- package/dist/node/include/node_blob.h +159 -0
- package/dist/node/include/node_bob-inl.h +36 -0
- package/dist/node/include/node_bob.h +107 -0
- package/dist/node/include/node_buffer.h +92 -0
- package/dist/node/include/node_builtins.h +220 -0
- package/dist/node/include/node_config_file.h +46 -0
- package/dist/node/include/node_constants.h +82 -0
- package/dist/node/include/node_context_data.h +168 -0
- package/dist/node/include/node_contextify.h +204 -0
- package/dist/node/include/node_crypto.h +56 -0
- package/dist/node/include/node_debug.h +30 -0
- package/dist/node/include/node_dir.h +52 -0
- package/dist/node/include/node_dotenv.h +45 -0
- package/dist/node/include/node_errors.h +380 -0
- package/dist/node/include/node_exit_code.h +54 -0
- package/dist/node/include/node_external_reference.h +165 -0
- package/dist/node/include/node_file-inl.h +406 -0
- package/dist/node/include/node_file.h +537 -0
- package/dist/node/include/node_http2.h +1177 -0
- package/dist/node/include/node_http2_state.h +159 -0
- package/dist/node/include/node_http_common-inl.h +202 -0
- package/dist/node/include/node_http_common.h +535 -0
- package/dist/node/include/node_i18n.h +132 -0
- package/dist/node/include/node_internals.h +483 -0
- package/dist/node/include/node_main_instance.h +67 -0
- package/dist/node/include/node_mem-inl.h +113 -0
- package/dist/node/include/node_mem.h +45 -0
- package/dist/node/include/node_messaging.h +389 -0
- package/dist/node/include/node_metadata.h +164 -0
- package/dist/node/include/node_modules.h +91 -0
- package/dist/node/include/node_mutex.h +323 -0
- package/dist/node/include/node_object_wrap.h +132 -0
- package/dist/node/include/node_options-inl.h +490 -0
- package/dist/node/include/node_options.h +615 -0
- package/dist/node/include/node_perf.h +166 -0
- package/dist/node/include/node_perf_common.h +102 -0
- package/dist/node/include/node_platform.h +238 -0
- package/dist/node/include/node_process-inl.h +26 -0
- package/dist/node/include/node_process.h +112 -0
- package/dist/node/include/node_realm-inl.h +151 -0
- package/dist/node/include/node_realm.h +183 -0
- package/dist/node/include/node_report.h +43 -0
- package/dist/node/include/node_revert.h +82 -0
- package/dist/node/include/node_root_certs.h +3520 -0
- package/dist/node/include/node_sea.h +74 -0
- package/dist/node/include/node_shadow_realm.h +46 -0
- package/dist/node/include/node_snapshot_builder.h +57 -0
- package/dist/node/include/node_snapshotable.h +174 -0
- package/dist/node/include/node_sockaddr-inl.h +257 -0
- package/dist/node/include/node_sockaddr.h +394 -0
- package/dist/node/include/node_sqlite.h +270 -0
- package/dist/node/include/node_stat_watcher.h +73 -0
- package/dist/node/include/node_task_runner.h +92 -0
- package/dist/node/include/node_threadsafe_cow-inl.h +54 -0
- package/dist/node/include/node_threadsafe_cow.h +105 -0
- package/dist/node/include/node_union_bytes.h +81 -0
- package/dist/node/include/node_url.h +96 -0
- package/dist/node/include/node_v8.h +77 -0
- package/dist/node/include/node_v8_platform-inl.h +185 -0
- package/dist/node/include/node_version.h +110 -0
- package/dist/node/include/node_wasi.h +184 -0
- package/dist/node/include/node_wasm_web_api.h +55 -0
- package/dist/node/include/node_watchdog.h +154 -0
- package/dist/node/include/node_webstorage.h +60 -0
- package/dist/node/include/node_worker.h +158 -0
- package/dist/node/include/path.h +33 -0
- package/dist/node/include/permission/addon_permission.h +31 -0
- package/dist/node/include/permission/child_process_permission.h +31 -0
- package/dist/node/include/permission/fs_permission.h +167 -0
- package/dist/node/include/permission/inspector_permission.h +31 -0
- package/dist/node/include/permission/permission.h +138 -0
- package/dist/node/include/permission/permission_base.h +65 -0
- package/dist/node/include/permission/wasi_permission.h +31 -0
- package/dist/node/include/permission/worker_permission.h +31 -0
- package/dist/node/include/pipe_wrap.h +80 -0
- package/dist/node/include/quic/application.h +159 -0
- package/dist/node/include/quic/bindingdata.h +272 -0
- package/dist/node/include/quic/cid.h +127 -0
- package/dist/node/include/quic/data.h +148 -0
- package/dist/node/include/quic/defs.h +245 -0
- package/dist/node/include/quic/endpoint.h +458 -0
- package/dist/node/include/quic/http3.h +15 -0
- package/dist/node/include/quic/logstream.h +81 -0
- package/dist/node/include/quic/packet.h +152 -0
- package/dist/node/include/quic/preferredaddress.h +72 -0
- package/dist/node/include/quic/session.h +443 -0
- package/dist/node/include/quic/sessionticket.h +108 -0
- package/dist/node/include/quic/streams.h +232 -0
- package/dist/node/include/quic/tlscontext.h +227 -0
- package/dist/node/include/quic/tokens.h +256 -0
- package/dist/node/include/quic/transportparams.h +165 -0
- package/dist/node/include/req_wrap-inl.h +171 -0
- package/dist/node/include/req_wrap.h +77 -0
- package/dist/node/include/spawn_sync.h +243 -0
- package/dist/node/include/stream_base-inl.h +173 -0
- package/dist/node/include/stream_base.h +478 -0
- package/dist/node/include/stream_pipe.h +76 -0
- package/dist/node/include/stream_wrap.h +132 -0
- package/dist/node/include/string_bytes.h +113 -0
- package/dist/node/include/string_decoder-inl.h +31 -0
- package/dist/node/include/string_decoder.h +49 -0
- package/dist/node/include/tcp_wrap.h +105 -0
- package/dist/node/include/threadpoolwork-inl.h +70 -0
- package/dist/node/include/timer_wrap-inl.h +32 -0
- package/dist/node/include/timer_wrap.h +85 -0
- package/dist/node/include/timers.h +70 -0
- package/dist/node/include/tracing/agent.h +195 -0
- package/dist/node/include/tracing/node_trace_buffer.h +83 -0
- package/dist/node/include/tracing/node_trace_writer.h +75 -0
- package/dist/node/include/tracing/trace_event.h +722 -0
- package/dist/node/include/tracing/trace_event_common.h +1109 -0
- package/dist/node/include/tracing/traced_value.h +129 -0
- package/dist/node/include/tty_wrap.h +65 -0
- package/dist/node/include/udp_wrap.h +230 -0
- package/dist/node/include/undici_version.h +6 -0
- package/dist/node/include/util-inl.h +700 -0
- package/dist/node/include/util.h +1021 -0
- package/dist/node/include/uv/aix.h +32 -0
- package/dist/node/include/uv/bsd.h +34 -0
- package/dist/node/include/uv/darwin.h +61 -0
- package/dist/node/include/uv/errno.h +483 -0
- package/dist/node/include/uv/linux.h +34 -0
- package/dist/node/include/uv/os390.h +33 -0
- package/dist/node/include/uv/posix.h +31 -0
- package/dist/node/include/uv/sunos.h +44 -0
- package/dist/node/include/uv/threadpool.h +37 -0
- package/dist/node/include/uv/tree.h +521 -0
- package/dist/node/include/uv/unix.h +512 -0
- package/dist/node/include/uv/version.h +43 -0
- package/dist/node/include/uv/win.h +698 -0
- package/dist/node/include/uv.h +1990 -0
- package/dist/node/include/v8-array-buffer.h +525 -0
- package/dist/node/include/v8-callbacks.h +462 -0
- package/dist/node/include/v8-container.h +183 -0
- package/dist/node/include/v8-context.h +485 -0
- package/dist/node/include/v8-cppgc.h +245 -0
- package/dist/node/include/v8-data.h +80 -0
- package/dist/node/include/v8-date.h +48 -0
- package/dist/node/include/v8-debug.h +168 -0
- package/dist/node/include/v8-embedder-heap.h +82 -0
- package/dist/node/include/v8-embedder-state-scope.h +52 -0
- package/dist/node/include/v8-exception.h +223 -0
- package/dist/node/include/v8-extension.h +62 -0
- package/dist/node/include/v8-external.h +37 -0
- package/dist/node/include/v8-fast-api-calls.h +984 -0
- package/dist/node/include/v8-forward.h +82 -0
- package/dist/node/include/v8-function-callback.h +607 -0
- package/dist/node/include/v8-function.h +140 -0
- package/dist/node/include/v8-handle-base.h +137 -0
- package/dist/node/include/v8-initialization.h +289 -0
- package/dist/node/include/v8-inspector-protocol.h +13 -0
- package/dist/node/include/v8-inspector.h +419 -0
- package/dist/node/include/v8-internal.h +1397 -0
- package/dist/node/include/v8-isolate.h +1767 -0
- package/dist/node/include/v8-json.h +47 -0
- package/dist/node/include/v8-local-handle.h +758 -0
- package/dist/node/include/v8-locker.h +138 -0
- package/dist/node/include/v8-maybe.h +160 -0
- package/dist/node/include/v8-memory-span.h +198 -0
- package/dist/node/include/v8-message.h +233 -0
- package/dist/node/include/v8-metrics.h +264 -0
- package/dist/node/include/v8-microtask-queue.h +157 -0
- package/dist/node/include/v8-microtask.h +28 -0
- package/dist/node/include/v8-object.h +824 -0
- package/dist/node/include/v8-persistent-handle.h +582 -0
- package/dist/node/include/v8-platform.h +1358 -0
- package/dist/node/include/v8-primitive-object.h +118 -0
- package/dist/node/include/v8-primitive.h +877 -0
- package/dist/node/include/v8-profiler.h +1302 -0
- package/dist/node/include/v8-promise.h +174 -0
- package/dist/node/include/v8-proxy.h +50 -0
- package/dist/node/include/v8-regexp.h +106 -0
- package/dist/node/include/v8-script.h +904 -0
- package/dist/node/include/v8-snapshot.h +266 -0
- package/dist/node/include/v8-source-location.h +92 -0
- package/dist/node/include/v8-statistics.h +238 -0
- package/dist/node/include/v8-template.h +1297 -0
- package/dist/node/include/v8-traced-handle.h +432 -0
- package/dist/node/include/v8-typed-array.h +390 -0
- package/dist/node/include/v8-unwinder-state.h +31 -0
- package/dist/node/include/v8-unwinder.h +132 -0
- package/dist/node/include/v8-util.h +665 -0
- package/dist/node/include/v8-value-serializer-version.h +24 -0
- package/dist/node/include/v8-value-serializer.h +316 -0
- package/dist/node/include/v8-value.h +655 -0
- package/dist/node/include/v8-version-string.h +38 -0
- package/dist/node/include/v8-version.h +20 -0
- package/dist/node/include/v8-wasm-trap-handler-posix.h +31 -0
- package/dist/node/include/v8-wasm-trap-handler-win.h +28 -0
- package/dist/node/include/v8-wasm.h +201 -0
- package/dist/node/include/v8-weak-callback-info.h +80 -0
- package/dist/node/include/v8.h +88 -0
- package/dist/node/include/v8config.h +981 -0
- package/dist/node/include/zlib_version.h +6 -0
- package/dist/node/libnode.dll +0 -0
- package/dist/node/libnode.lib +0 -0
- package/dist/node/libnodebuildinfo.json +10 -0
- package/dist/node/link_node.lib +0 -0
- package/dist/node/link_node.node +0 -0
- package/ensure-libnode-aliases.js +41 -0
- package/index.js +2 -0
- package/libnode.release.json +2 -2
- package/package.json +2 -1
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
#ifndef SRC_NODE_HTTP2_STATE_H_
|
|
2
|
+
#define SRC_NODE_HTTP2_STATE_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "aliased_buffer.h"
|
|
7
|
+
|
|
8
|
+
struct nghttp2_rcbuf;
|
|
9
|
+
|
|
10
|
+
namespace node {
|
|
11
|
+
namespace http2 {
|
|
12
|
+
|
|
13
|
+
enum Http2SettingsIndex {
|
|
14
|
+
IDX_SETTINGS_HEADER_TABLE_SIZE,
|
|
15
|
+
IDX_SETTINGS_ENABLE_PUSH,
|
|
16
|
+
IDX_SETTINGS_INITIAL_WINDOW_SIZE,
|
|
17
|
+
IDX_SETTINGS_MAX_FRAME_SIZE,
|
|
18
|
+
IDX_SETTINGS_MAX_CONCURRENT_STREAMS,
|
|
19
|
+
IDX_SETTINGS_MAX_HEADER_LIST_SIZE,
|
|
20
|
+
IDX_SETTINGS_ENABLE_CONNECT_PROTOCOL,
|
|
21
|
+
IDX_SETTINGS_COUNT
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// number of max additional settings, thus settings not implemented by nghttp2
|
|
25
|
+
const size_t MAX_ADDITIONAL_SETTINGS = 10;
|
|
26
|
+
|
|
27
|
+
enum Http2SessionStateIndex {
|
|
28
|
+
IDX_SESSION_STATE_EFFECTIVE_LOCAL_WINDOW_SIZE,
|
|
29
|
+
IDX_SESSION_STATE_EFFECTIVE_RECV_DATA_LENGTH,
|
|
30
|
+
IDX_SESSION_STATE_NEXT_STREAM_ID,
|
|
31
|
+
IDX_SESSION_STATE_LOCAL_WINDOW_SIZE,
|
|
32
|
+
IDX_SESSION_STATE_LAST_PROC_STREAM_ID,
|
|
33
|
+
IDX_SESSION_STATE_REMOTE_WINDOW_SIZE,
|
|
34
|
+
IDX_SESSION_STATE_OUTBOUND_QUEUE_SIZE,
|
|
35
|
+
IDX_SESSION_STATE_HD_DEFLATE_DYNAMIC_TABLE_SIZE,
|
|
36
|
+
IDX_SESSION_STATE_HD_INFLATE_DYNAMIC_TABLE_SIZE,
|
|
37
|
+
IDX_SESSION_STATE_COUNT
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
enum Http2StreamStateIndex {
|
|
41
|
+
IDX_STREAM_STATE,
|
|
42
|
+
IDX_STREAM_STATE_WEIGHT,
|
|
43
|
+
IDX_STREAM_STATE_SUM_DEPENDENCY_WEIGHT,
|
|
44
|
+
IDX_STREAM_STATE_LOCAL_CLOSE,
|
|
45
|
+
IDX_STREAM_STATE_REMOTE_CLOSE,
|
|
46
|
+
IDX_STREAM_STATE_LOCAL_WINDOW_SIZE,
|
|
47
|
+
IDX_STREAM_STATE_COUNT
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
enum Http2OptionsIndex {
|
|
51
|
+
IDX_OPTIONS_MAX_DEFLATE_DYNAMIC_TABLE_SIZE,
|
|
52
|
+
IDX_OPTIONS_MAX_RESERVED_REMOTE_STREAMS,
|
|
53
|
+
IDX_OPTIONS_MAX_SEND_HEADER_BLOCK_LENGTH,
|
|
54
|
+
IDX_OPTIONS_PEER_MAX_CONCURRENT_STREAMS,
|
|
55
|
+
IDX_OPTIONS_PADDING_STRATEGY,
|
|
56
|
+
IDX_OPTIONS_MAX_HEADER_LIST_PAIRS,
|
|
57
|
+
IDX_OPTIONS_MAX_OUTSTANDING_PINGS,
|
|
58
|
+
IDX_OPTIONS_MAX_OUTSTANDING_SETTINGS,
|
|
59
|
+
IDX_OPTIONS_MAX_SESSION_MEMORY,
|
|
60
|
+
IDX_OPTIONS_MAX_SETTINGS,
|
|
61
|
+
IDX_OPTIONS_STREAM_RESET_RATE,
|
|
62
|
+
IDX_OPTIONS_STREAM_RESET_BURST,
|
|
63
|
+
IDX_OPTIONS_STRICT_HTTP_FIELD_WHITESPACE_VALIDATION,
|
|
64
|
+
IDX_OPTIONS_FLAGS
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
enum Http2StreamStatisticsIndex {
|
|
68
|
+
IDX_STREAM_STATS_ID,
|
|
69
|
+
IDX_STREAM_STATS_TIMETOFIRSTBYTE,
|
|
70
|
+
IDX_STREAM_STATS_TIMETOFIRSTHEADER,
|
|
71
|
+
IDX_STREAM_STATS_TIMETOFIRSTBYTESENT,
|
|
72
|
+
IDX_STREAM_STATS_SENTBYTES,
|
|
73
|
+
IDX_STREAM_STATS_RECEIVEDBYTES,
|
|
74
|
+
IDX_STREAM_STATS_COUNT
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
enum Http2SessionStatisticsIndex {
|
|
78
|
+
IDX_SESSION_STATS_TYPE,
|
|
79
|
+
IDX_SESSION_STATS_PINGRTT,
|
|
80
|
+
IDX_SESSION_STATS_FRAMESRECEIVED,
|
|
81
|
+
IDX_SESSION_STATS_FRAMESSENT,
|
|
82
|
+
IDX_SESSION_STATS_STREAMCOUNT,
|
|
83
|
+
IDX_SESSION_STATS_STREAMAVERAGEDURATION,
|
|
84
|
+
IDX_SESSION_STATS_DATA_SENT,
|
|
85
|
+
IDX_SESSION_STATS_DATA_RECEIVED,
|
|
86
|
+
IDX_SESSION_STATS_MAX_CONCURRENT_STREAMS,
|
|
87
|
+
IDX_SESSION_STATS_COUNT
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
class Http2State : public BaseObject {
|
|
91
|
+
public:
|
|
92
|
+
Http2State(Realm* realm, v8::Local<v8::Object> obj)
|
|
93
|
+
: BaseObject(realm, obj),
|
|
94
|
+
root_buffer(realm->isolate(), sizeof(http2_state_internal)),
|
|
95
|
+
session_state_buffer(
|
|
96
|
+
realm->isolate(),
|
|
97
|
+
offsetof(http2_state_internal, session_state_buffer),
|
|
98
|
+
IDX_SESSION_STATE_COUNT,
|
|
99
|
+
root_buffer),
|
|
100
|
+
stream_state_buffer(realm->isolate(),
|
|
101
|
+
offsetof(http2_state_internal, stream_state_buffer),
|
|
102
|
+
IDX_STREAM_STATE_COUNT,
|
|
103
|
+
root_buffer),
|
|
104
|
+
stream_stats_buffer(realm->isolate(),
|
|
105
|
+
offsetof(http2_state_internal, stream_stats_buffer),
|
|
106
|
+
IDX_STREAM_STATS_COUNT,
|
|
107
|
+
root_buffer),
|
|
108
|
+
session_stats_buffer(
|
|
109
|
+
realm->isolate(),
|
|
110
|
+
offsetof(http2_state_internal, session_stats_buffer),
|
|
111
|
+
IDX_SESSION_STATS_COUNT,
|
|
112
|
+
root_buffer),
|
|
113
|
+
options_buffer(realm->isolate(),
|
|
114
|
+
offsetof(http2_state_internal, options_buffer),
|
|
115
|
+
IDX_OPTIONS_FLAGS + 1,
|
|
116
|
+
root_buffer),
|
|
117
|
+
settings_buffer(
|
|
118
|
+
realm->isolate(),
|
|
119
|
+
offsetof(http2_state_internal, settings_buffer),
|
|
120
|
+
IDX_SETTINGS_COUNT + 1 + 1 + 2 * MAX_ADDITIONAL_SETTINGS,
|
|
121
|
+
root_buffer) {}
|
|
122
|
+
|
|
123
|
+
AliasedUint8Array root_buffer;
|
|
124
|
+
AliasedFloat64Array session_state_buffer;
|
|
125
|
+
AliasedFloat64Array stream_state_buffer;
|
|
126
|
+
AliasedFloat64Array stream_stats_buffer;
|
|
127
|
+
AliasedFloat64Array session_stats_buffer;
|
|
128
|
+
AliasedUint32Array options_buffer;
|
|
129
|
+
AliasedUint32Array settings_buffer;
|
|
130
|
+
|
|
131
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
132
|
+
SET_SELF_SIZE(Http2State)
|
|
133
|
+
SET_MEMORY_INFO_NAME(Http2State)
|
|
134
|
+
|
|
135
|
+
SET_BINDING_ID(http2_binding_data)
|
|
136
|
+
|
|
137
|
+
private:
|
|
138
|
+
struct http2_state_internal {
|
|
139
|
+
// doubles first so that they are always sizeof(double)-aligned
|
|
140
|
+
double session_state_buffer[IDX_SESSION_STATE_COUNT];
|
|
141
|
+
double stream_state_buffer[IDX_STREAM_STATE_COUNT];
|
|
142
|
+
double stream_stats_buffer[IDX_STREAM_STATS_COUNT];
|
|
143
|
+
double session_stats_buffer[IDX_SESSION_STATS_COUNT];
|
|
144
|
+
uint32_t options_buffer[IDX_OPTIONS_FLAGS + 1];
|
|
145
|
+
// first + 1: number of actual nghttp2 supported settings
|
|
146
|
+
// second + 1: number of additional settings not supported by nghttp2
|
|
147
|
+
// 2 * MAX_ADDITIONAL_SETTINGS: settings id and value for each
|
|
148
|
+
// additional setting
|
|
149
|
+
uint32_t settings_buffer[IDX_SETTINGS_COUNT + 1 + 1 +
|
|
150
|
+
2 * MAX_ADDITIONAL_SETTINGS];
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
} // namespace http2
|
|
155
|
+
} // namespace node
|
|
156
|
+
|
|
157
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
158
|
+
|
|
159
|
+
#endif // SRC_NODE_HTTP2_STATE_H_
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
#ifndef SRC_NODE_HTTP_COMMON_INL_H_
|
|
2
|
+
#define SRC_NODE_HTTP_COMMON_INL_H_
|
|
3
|
+
|
|
4
|
+
#include "node_http_common.h"
|
|
5
|
+
#include "node.h"
|
|
6
|
+
#include "node_mem-inl.h"
|
|
7
|
+
#include "env-inl.h"
|
|
8
|
+
#include "v8.h"
|
|
9
|
+
|
|
10
|
+
#include <algorithm>
|
|
11
|
+
#include "nbytes.h"
|
|
12
|
+
|
|
13
|
+
namespace node {
|
|
14
|
+
|
|
15
|
+
template <typename T>
|
|
16
|
+
NgHeaders<T>::NgHeaders(Environment* env, v8::Local<v8::Array> headers) {
|
|
17
|
+
v8::Local<v8::Value> header_string =
|
|
18
|
+
headers->Get(env->context(), 0).ToLocalChecked();
|
|
19
|
+
v8::Local<v8::Value> header_count =
|
|
20
|
+
headers->Get(env->context(), 1).ToLocalChecked();
|
|
21
|
+
CHECK(header_count->IsUint32());
|
|
22
|
+
CHECK(header_string->IsString());
|
|
23
|
+
count_ = header_count.As<v8::Uint32>()->Value();
|
|
24
|
+
int header_string_len = header_string.As<v8::String>()->Length();
|
|
25
|
+
|
|
26
|
+
if (count_ == 0) {
|
|
27
|
+
CHECK_EQ(header_string_len, 0);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
buf_.AllocateSufficientStorage((alignof(nv_t) - 1) +
|
|
32
|
+
count_ * sizeof(nv_t) +
|
|
33
|
+
header_string_len);
|
|
34
|
+
|
|
35
|
+
char* start = nbytes::AlignUp(buf_.out(), alignof(nv_t));
|
|
36
|
+
char* header_contents = start + (count_ * sizeof(nv_t));
|
|
37
|
+
nv_t* const nva = reinterpret_cast<nv_t*>(start);
|
|
38
|
+
|
|
39
|
+
CHECK_LE(header_contents + header_string_len, *buf_ + buf_.length());
|
|
40
|
+
CHECK_EQ(header_string.As<v8::String>()->WriteOneByte(
|
|
41
|
+
env->isolate(),
|
|
42
|
+
reinterpret_cast<uint8_t*>(header_contents),
|
|
43
|
+
0,
|
|
44
|
+
header_string_len,
|
|
45
|
+
v8::String::NO_NULL_TERMINATION),
|
|
46
|
+
header_string_len);
|
|
47
|
+
|
|
48
|
+
size_t n = 0;
|
|
49
|
+
char* p;
|
|
50
|
+
for (p = header_contents; p < header_contents + header_string_len; n++) {
|
|
51
|
+
if (n >= count_) {
|
|
52
|
+
static uint8_t zero = '\0';
|
|
53
|
+
nva[0].name = nva[0].value = &zero;
|
|
54
|
+
nva[0].namelen = nva[0].valuelen = 1;
|
|
55
|
+
count_ = 1;
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
nva[n].name = reinterpret_cast<uint8_t*>(p);
|
|
60
|
+
nva[n].namelen = strlen(p);
|
|
61
|
+
p += nva[n].namelen + 1;
|
|
62
|
+
nva[n].value = reinterpret_cast<uint8_t*>(p);
|
|
63
|
+
nva[n].valuelen = strlen(p);
|
|
64
|
+
p += nva[n].valuelen + 1;
|
|
65
|
+
nva[n].flags = *p;
|
|
66
|
+
p++;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
size_t GetClientMaxHeaderPairs(size_t max_header_pairs) {
|
|
71
|
+
static constexpr size_t min_header_pairs = 1;
|
|
72
|
+
return std::max(max_header_pairs, min_header_pairs);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
size_t GetServerMaxHeaderPairs(size_t max_header_pairs) {
|
|
76
|
+
static constexpr size_t min_header_pairs = 4;
|
|
77
|
+
return std::max(max_header_pairs, min_header_pairs);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
template <typename allocator_t>
|
|
81
|
+
std::string NgHeaderBase<allocator_t>::ToString() const {
|
|
82
|
+
std::string ret = name();
|
|
83
|
+
ret += " = ";
|
|
84
|
+
ret += value();
|
|
85
|
+
return ret;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
template <typename T>
|
|
89
|
+
bool NgHeader<T>::IsZeroLength(
|
|
90
|
+
NgHeader<T>::rcbuf_t* name,
|
|
91
|
+
NgHeader<T>::rcbuf_t* value) {
|
|
92
|
+
return IsZeroLength(-1, name, value);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
template <typename T>
|
|
96
|
+
bool NgHeader<T>::IsZeroLength(
|
|
97
|
+
int32_t token,
|
|
98
|
+
NgHeader<T>::rcbuf_t* name,
|
|
99
|
+
NgHeader<T>::rcbuf_t* value) {
|
|
100
|
+
|
|
101
|
+
if (NgHeader<T>::rcbufferpointer_t::IsZeroLength(value))
|
|
102
|
+
return true;
|
|
103
|
+
|
|
104
|
+
const char* header_name = T::ToHttpHeaderName(token);
|
|
105
|
+
return header_name != nullptr ||
|
|
106
|
+
NgHeader<T>::rcbufferpointer_t::IsZeroLength(name);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
template <typename T>
|
|
110
|
+
NgHeader<T>::NgHeader(
|
|
111
|
+
Environment* env,
|
|
112
|
+
NgHeader<T>::rcbuf_t* name,
|
|
113
|
+
NgHeader<T>::rcbuf_t* value,
|
|
114
|
+
uint8_t flags)
|
|
115
|
+
: NgHeader<T>(env, -1, name, value, flags) {}
|
|
116
|
+
|
|
117
|
+
template <typename T>
|
|
118
|
+
NgHeader<T>::NgHeader(
|
|
119
|
+
Environment* env,
|
|
120
|
+
int32_t token,
|
|
121
|
+
NgHeader<T>::rcbuf_t* name,
|
|
122
|
+
NgHeader<T>::rcbuf_t* value,
|
|
123
|
+
uint8_t flags) : env_(env), token_(token), flags_(flags) {
|
|
124
|
+
if (token == -1) {
|
|
125
|
+
CHECK_NOT_NULL(name);
|
|
126
|
+
name_.reset(name, true); // Internalizable
|
|
127
|
+
}
|
|
128
|
+
CHECK_NOT_NULL(value);
|
|
129
|
+
name_.reset(name, true); // Internalizable
|
|
130
|
+
value_.reset(value);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
template <typename T>
|
|
134
|
+
NgHeader<T>::NgHeader(NgHeader<T>&& other) noexcept
|
|
135
|
+
: env_(other.env_),
|
|
136
|
+
name_(std::move(other.name_)),
|
|
137
|
+
value_(std::move(other.value_)),
|
|
138
|
+
token_(other.token_),
|
|
139
|
+
flags_(other.flags_) {
|
|
140
|
+
other.token_ = -1;
|
|
141
|
+
other.flags_ = 0;
|
|
142
|
+
other.env_ = nullptr;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
template <typename T>
|
|
146
|
+
void NgHeader<T>::MemoryInfo(MemoryTracker* tracker) const {
|
|
147
|
+
tracker->TrackField("name", name_);
|
|
148
|
+
tracker->TrackField("value", value_);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
template <typename T>
|
|
152
|
+
v8::MaybeLocal<v8::String> NgHeader<T>::GetName(
|
|
153
|
+
NgHeader<T>::allocator_t* allocator) const {
|
|
154
|
+
|
|
155
|
+
// Not all instances will support using token id's for header names.
|
|
156
|
+
// HTTP/2 specifically does not support it.
|
|
157
|
+
const char* header_name = T::ToHttpHeaderName(token_);
|
|
158
|
+
|
|
159
|
+
// If header_name is not nullptr, then it is a known header with
|
|
160
|
+
// a statically defined name. We can safely internalize it here.
|
|
161
|
+
if (header_name != nullptr) {
|
|
162
|
+
auto& static_str_map = env_->isolate_data()->static_str_map;
|
|
163
|
+
v8::Eternal<v8::String> eternal = static_str_map[header_name];
|
|
164
|
+
if (eternal.IsEmpty()) {
|
|
165
|
+
v8::Local<v8::String> str = OneByteString(env_->isolate(), header_name);
|
|
166
|
+
eternal.Set(env_->isolate(), str);
|
|
167
|
+
return str;
|
|
168
|
+
}
|
|
169
|
+
return eternal.Get(env_->isolate());
|
|
170
|
+
}
|
|
171
|
+
return rcbufferpointer_t::External::New(allocator, name_);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
template <typename T>
|
|
175
|
+
v8::MaybeLocal<v8::String> NgHeader<T>::GetValue(
|
|
176
|
+
NgHeader<T>::allocator_t* allocator) const {
|
|
177
|
+
return rcbufferpointer_t::External::New(allocator, value_);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
template <typename T>
|
|
181
|
+
std::string NgHeader<T>::name() const {
|
|
182
|
+
return name_.str();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
template <typename T>
|
|
186
|
+
std::string NgHeader<T>::value() const {
|
|
187
|
+
return value_.str();
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
template <typename T>
|
|
191
|
+
size_t NgHeader<T>::length() const {
|
|
192
|
+
return name_.len() + value_.len();
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
template <typename T>
|
|
196
|
+
uint8_t NgHeader<T>::flags() const {
|
|
197
|
+
return flags_;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
} // namespace node
|
|
201
|
+
|
|
202
|
+
#endif // SRC_NODE_HTTP_COMMON_INL_H_
|