@kungfu-tech/libnode-win32-x64 0.0.0-bootstrap.0 → 22.22.3-kf.1

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.
Files changed (343) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/node/include/acorn_version.h +6 -0
  4. package/dist/node/include/aliased_buffer-inl.h +244 -0
  5. package/dist/node/include/aliased_buffer.h +206 -0
  6. package/dist/node/include/aliased_struct-inl.h +54 -0
  7. package/dist/node/include/aliased_struct.h +63 -0
  8. package/dist/node/include/amaro_version.h +6 -0
  9. package/dist/node/include/async_context_frame.h +33 -0
  10. package/dist/node/include/async_wrap-inl.h +96 -0
  11. package/dist/node/include/async_wrap.h +243 -0
  12. package/dist/node/include/base_object-inl.h +335 -0
  13. package/dist/node/include/base_object.h +342 -0
  14. package/dist/node/include/base_object_types.h +74 -0
  15. package/dist/node/include/blob_serializer_deserializer-inl.h +385 -0
  16. package/dist/node/include/blob_serializer_deserializer.h +132 -0
  17. package/dist/node/include/callback_queue-inl.h +97 -0
  18. package/dist/node/include/callback_queue.h +79 -0
  19. package/dist/node/include/cares_wrap.h +447 -0
  20. package/dist/node/include/cjs_module_lexer_version.h +6 -0
  21. package/dist/node/include/cleanup_queue-inl.h +36 -0
  22. package/dist/node/include/cleanup_queue.h +79 -0
  23. package/dist/node/include/compile_cache.h +104 -0
  24. package/dist/node/include/connect_wrap.h +26 -0
  25. package/dist/node/include/connection_wrap.h +30 -0
  26. package/dist/node/include/cppgc/allocation.h +310 -0
  27. package/dist/node/include/cppgc/common.h +28 -0
  28. package/dist/node/include/cppgc/cross-thread-persistent.h +466 -0
  29. package/dist/node/include/cppgc/custom-space.h +97 -0
  30. package/dist/node/include/cppgc/default-platform.h +67 -0
  31. package/dist/node/include/cppgc/ephemeron-pair.h +30 -0
  32. package/dist/node/include/cppgc/explicit-management.h +100 -0
  33. package/dist/node/include/cppgc/garbage-collected.h +106 -0
  34. package/dist/node/include/cppgc/heap-consistency.h +309 -0
  35. package/dist/node/include/cppgc/heap-handle.h +48 -0
  36. package/dist/node/include/cppgc/heap-state.h +82 -0
  37. package/dist/node/include/cppgc/heap-statistics.h +120 -0
  38. package/dist/node/include/cppgc/heap.h +202 -0
  39. package/dist/node/include/cppgc/internal/api-constants.h +87 -0
  40. package/dist/node/include/cppgc/internal/atomic-entry-flag.h +48 -0
  41. package/dist/node/include/cppgc/internal/base-page-handle.h +45 -0
  42. package/dist/node/include/cppgc/internal/caged-heap-local-data.h +121 -0
  43. package/dist/node/include/cppgc/internal/caged-heap.h +68 -0
  44. package/dist/node/include/cppgc/internal/compiler-specific.h +38 -0
  45. package/dist/node/include/cppgc/internal/finalizer-trait.h +93 -0
  46. package/dist/node/include/cppgc/internal/gc-info.h +148 -0
  47. package/dist/node/include/cppgc/internal/logging.h +50 -0
  48. package/dist/node/include/cppgc/internal/member-storage.h +256 -0
  49. package/dist/node/include/cppgc/internal/name-trait.h +137 -0
  50. package/dist/node/include/cppgc/internal/persistent-node.h +214 -0
  51. package/dist/node/include/cppgc/internal/pointer-policies.h +243 -0
  52. package/dist/node/include/cppgc/internal/write-barrier.h +487 -0
  53. package/dist/node/include/cppgc/liveness-broker.h +78 -0
  54. package/dist/node/include/cppgc/macros.h +35 -0
  55. package/dist/node/include/cppgc/member.h +629 -0
  56. package/dist/node/include/cppgc/name-provider.h +65 -0
  57. package/dist/node/include/cppgc/object-size-trait.h +58 -0
  58. package/dist/node/include/cppgc/persistent.h +377 -0
  59. package/dist/node/include/cppgc/platform.h +163 -0
  60. package/dist/node/include/cppgc/prefinalizer.h +75 -0
  61. package/dist/node/include/cppgc/process-heap-statistics.h +36 -0
  62. package/dist/node/include/cppgc/sentinel-pointer.h +39 -0
  63. package/dist/node/include/cppgc/source-location.h +16 -0
  64. package/dist/node/include/cppgc/testing.h +106 -0
  65. package/dist/node/include/cppgc/trace-trait.h +128 -0
  66. package/dist/node/include/cppgc/type-traits.h +271 -0
  67. package/dist/node/include/cppgc/visitor.h +504 -0
  68. package/dist/node/include/crypto/crypto_aes.h +88 -0
  69. package/dist/node/include/crypto/crypto_bio.h +193 -0
  70. package/dist/node/include/crypto/crypto_cipher.h +293 -0
  71. package/dist/node/include/crypto/crypto_clienthello-inl.h +90 -0
  72. package/dist/node/include/crypto/crypto_clienthello.h +131 -0
  73. package/dist/node/include/crypto/crypto_common.h +64 -0
  74. package/dist/node/include/crypto/crypto_context.h +171 -0
  75. package/dist/node/include/crypto/crypto_dh.h +126 -0
  76. package/dist/node/include/crypto/crypto_dsa.h +52 -0
  77. package/dist/node/include/crypto/crypto_ec.h +164 -0
  78. package/dist/node/include/crypto/crypto_hash.h +91 -0
  79. package/dist/node/include/crypto/crypto_hkdf.h +61 -0
  80. package/dist/node/include/crypto/crypto_hmac.h +92 -0
  81. package/dist/node/include/crypto/crypto_keygen.h +299 -0
  82. package/dist/node/include/crypto/crypto_keys.h +392 -0
  83. package/dist/node/include/crypto/crypto_pbkdf2.h +74 -0
  84. package/dist/node/include/crypto/crypto_random.h +124 -0
  85. package/dist/node/include/crypto/crypto_rsa.h +136 -0
  86. package/dist/node/include/crypto/crypto_scrypt.h +85 -0
  87. package/dist/node/include/crypto/crypto_sig.h +165 -0
  88. package/dist/node/include/crypto/crypto_spkac.h +21 -0
  89. package/dist/node/include/crypto/crypto_timing.h +20 -0
  90. package/dist/node/include/crypto/crypto_tls.h +305 -0
  91. package/dist/node/include/crypto/crypto_util.h +725 -0
  92. package/dist/node/include/crypto/crypto_x509.h +140 -0
  93. package/dist/node/include/dataqueue/queue.h +306 -0
  94. package/dist/node/include/debug_utils-inl.h +278 -0
  95. package/dist/node/include/debug_utils.h +196 -0
  96. package/dist/node/include/diagnosticfilename-inl.h +33 -0
  97. package/dist/node/include/embedded_data.h +17 -0
  98. package/dist/node/include/encoding_binding.h +61 -0
  99. package/dist/node/include/env-inl.h +984 -0
  100. package/dist/node/include/env.h +1287 -0
  101. package/dist/node/include/env_properties.h +540 -0
  102. package/dist/node/include/handle_wrap.h +123 -0
  103. package/dist/node/include/histogram-inl.h +107 -0
  104. package/dist/node/include/histogram.h +279 -0
  105. package/dist/node/include/inspector/io_agent.h +30 -0
  106. package/dist/node/include/inspector/main_thread_interface.h +116 -0
  107. package/dist/node/include/inspector/network_agent.h +94 -0
  108. package/dist/node/include/inspector/network_inspector.h +45 -0
  109. package/dist/node/include/inspector/network_requests_buffer.h +195 -0
  110. package/dist/node/include/inspector/network_resource_manager.h +29 -0
  111. package/dist/node/include/inspector/node_json.h +24 -0
  112. package/dist/node/include/inspector/node_string.h +101 -0
  113. package/dist/node/include/inspector/protocol_helper.h +27 -0
  114. package/dist/node/include/inspector/runtime_agent.h +41 -0
  115. package/dist/node/include/inspector/target_agent.h +75 -0
  116. package/dist/node/include/inspector/tracing_agent.h +43 -0
  117. package/dist/node/include/inspector/worker_agent.h +40 -0
  118. package/dist/node/include/inspector/worker_inspector.h +124 -0
  119. package/dist/node/include/inspector_agent.h +165 -0
  120. package/dist/node/include/inspector_io.h +78 -0
  121. package/dist/node/include/inspector_profiler.h +149 -0
  122. package/dist/node/include/inspector_socket.h +60 -0
  123. package/dist/node/include/inspector_socket_server.h +110 -0
  124. package/dist/node/include/js_native_api.h +607 -0
  125. package/dist/node/include/js_native_api_types.h +226 -0
  126. package/dist/node/include/js_native_api_v8.h +485 -0
  127. package/dist/node/include/js_native_api_v8_internals.h +45 -0
  128. package/dist/node/include/js_stream.h +52 -0
  129. package/dist/node/include/json_utils.h +172 -0
  130. package/dist/node/include/large_pages/node_large_page.h +34 -0
  131. package/dist/node/include/libplatform/libplatform-export.h +29 -0
  132. package/dist/node/include/libplatform/libplatform.h +112 -0
  133. package/dist/node/include/libplatform/v8-tracing.h +333 -0
  134. package/dist/node/include/memory_tracker-inl.h +359 -0
  135. package/dist/node/include/memory_tracker.h +289 -0
  136. package/dist/node/include/module_wrap.h +216 -0
  137. package/dist/node/include/node.h +1593 -0
  138. package/dist/node/include/node_api.h +265 -0
  139. package/dist/node/include/node_api_internals.h +48 -0
  140. package/dist/node/include/node_api_types.h +56 -0
  141. package/dist/node/include/node_binding.h +161 -0
  142. package/dist/node/include/node_blob.h +159 -0
  143. package/dist/node/include/node_bob-inl.h +36 -0
  144. package/dist/node/include/node_bob.h +107 -0
  145. package/dist/node/include/node_buffer.h +92 -0
  146. package/dist/node/include/node_builtins.h +220 -0
  147. package/dist/node/include/node_config_file.h +46 -0
  148. package/dist/node/include/node_constants.h +82 -0
  149. package/dist/node/include/node_context_data.h +168 -0
  150. package/dist/node/include/node_contextify.h +204 -0
  151. package/dist/node/include/node_crypto.h +56 -0
  152. package/dist/node/include/node_debug.h +30 -0
  153. package/dist/node/include/node_dir.h +52 -0
  154. package/dist/node/include/node_dotenv.h +45 -0
  155. package/dist/node/include/node_errors.h +380 -0
  156. package/dist/node/include/node_exit_code.h +54 -0
  157. package/dist/node/include/node_external_reference.h +165 -0
  158. package/dist/node/include/node_file-inl.h +406 -0
  159. package/dist/node/include/node_file.h +537 -0
  160. package/dist/node/include/node_http2.h +1177 -0
  161. package/dist/node/include/node_http2_state.h +159 -0
  162. package/dist/node/include/node_http_common-inl.h +202 -0
  163. package/dist/node/include/node_http_common.h +535 -0
  164. package/dist/node/include/node_i18n.h +132 -0
  165. package/dist/node/include/node_internals.h +483 -0
  166. package/dist/node/include/node_main_instance.h +67 -0
  167. package/dist/node/include/node_mem-inl.h +113 -0
  168. package/dist/node/include/node_mem.h +45 -0
  169. package/dist/node/include/node_messaging.h +389 -0
  170. package/dist/node/include/node_metadata.h +164 -0
  171. package/dist/node/include/node_modules.h +91 -0
  172. package/dist/node/include/node_mutex.h +323 -0
  173. package/dist/node/include/node_object_wrap.h +132 -0
  174. package/dist/node/include/node_options-inl.h +490 -0
  175. package/dist/node/include/node_options.h +615 -0
  176. package/dist/node/include/node_perf.h +166 -0
  177. package/dist/node/include/node_perf_common.h +102 -0
  178. package/dist/node/include/node_platform.h +238 -0
  179. package/dist/node/include/node_process-inl.h +26 -0
  180. package/dist/node/include/node_process.h +112 -0
  181. package/dist/node/include/node_realm-inl.h +151 -0
  182. package/dist/node/include/node_realm.h +183 -0
  183. package/dist/node/include/node_report.h +43 -0
  184. package/dist/node/include/node_revert.h +82 -0
  185. package/dist/node/include/node_root_certs.h +3520 -0
  186. package/dist/node/include/node_sea.h +74 -0
  187. package/dist/node/include/node_shadow_realm.h +46 -0
  188. package/dist/node/include/node_snapshot_builder.h +57 -0
  189. package/dist/node/include/node_snapshotable.h +174 -0
  190. package/dist/node/include/node_sockaddr-inl.h +257 -0
  191. package/dist/node/include/node_sockaddr.h +394 -0
  192. package/dist/node/include/node_sqlite.h +270 -0
  193. package/dist/node/include/node_stat_watcher.h +73 -0
  194. package/dist/node/include/node_task_runner.h +92 -0
  195. package/dist/node/include/node_threadsafe_cow-inl.h +54 -0
  196. package/dist/node/include/node_threadsafe_cow.h +105 -0
  197. package/dist/node/include/node_union_bytes.h +81 -0
  198. package/dist/node/include/node_url.h +96 -0
  199. package/dist/node/include/node_v8.h +77 -0
  200. package/dist/node/include/node_v8_platform-inl.h +185 -0
  201. package/dist/node/include/node_version.h +110 -0
  202. package/dist/node/include/node_wasi.h +184 -0
  203. package/dist/node/include/node_wasm_web_api.h +55 -0
  204. package/dist/node/include/node_watchdog.h +154 -0
  205. package/dist/node/include/node_webstorage.h +60 -0
  206. package/dist/node/include/node_worker.h +158 -0
  207. package/dist/node/include/path.h +33 -0
  208. package/dist/node/include/permission/addon_permission.h +31 -0
  209. package/dist/node/include/permission/child_process_permission.h +31 -0
  210. package/dist/node/include/permission/fs_permission.h +167 -0
  211. package/dist/node/include/permission/inspector_permission.h +31 -0
  212. package/dist/node/include/permission/permission.h +138 -0
  213. package/dist/node/include/permission/permission_base.h +65 -0
  214. package/dist/node/include/permission/wasi_permission.h +31 -0
  215. package/dist/node/include/permission/worker_permission.h +31 -0
  216. package/dist/node/include/pipe_wrap.h +80 -0
  217. package/dist/node/include/quic/application.h +159 -0
  218. package/dist/node/include/quic/bindingdata.h +272 -0
  219. package/dist/node/include/quic/cid.h +127 -0
  220. package/dist/node/include/quic/data.h +148 -0
  221. package/dist/node/include/quic/defs.h +245 -0
  222. package/dist/node/include/quic/endpoint.h +458 -0
  223. package/dist/node/include/quic/http3.h +15 -0
  224. package/dist/node/include/quic/logstream.h +81 -0
  225. package/dist/node/include/quic/packet.h +152 -0
  226. package/dist/node/include/quic/preferredaddress.h +72 -0
  227. package/dist/node/include/quic/session.h +443 -0
  228. package/dist/node/include/quic/sessionticket.h +108 -0
  229. package/dist/node/include/quic/streams.h +232 -0
  230. package/dist/node/include/quic/tlscontext.h +227 -0
  231. package/dist/node/include/quic/tokens.h +256 -0
  232. package/dist/node/include/quic/transportparams.h +165 -0
  233. package/dist/node/include/req_wrap-inl.h +171 -0
  234. package/dist/node/include/req_wrap.h +77 -0
  235. package/dist/node/include/spawn_sync.h +243 -0
  236. package/dist/node/include/stream_base-inl.h +173 -0
  237. package/dist/node/include/stream_base.h +478 -0
  238. package/dist/node/include/stream_pipe.h +76 -0
  239. package/dist/node/include/stream_wrap.h +132 -0
  240. package/dist/node/include/string_bytes.h +113 -0
  241. package/dist/node/include/string_decoder-inl.h +31 -0
  242. package/dist/node/include/string_decoder.h +49 -0
  243. package/dist/node/include/tcp_wrap.h +105 -0
  244. package/dist/node/include/threadpoolwork-inl.h +70 -0
  245. package/dist/node/include/timer_wrap-inl.h +32 -0
  246. package/dist/node/include/timer_wrap.h +85 -0
  247. package/dist/node/include/timers.h +70 -0
  248. package/dist/node/include/tracing/agent.h +195 -0
  249. package/dist/node/include/tracing/node_trace_buffer.h +83 -0
  250. package/dist/node/include/tracing/node_trace_writer.h +75 -0
  251. package/dist/node/include/tracing/trace_event.h +722 -0
  252. package/dist/node/include/tracing/trace_event_common.h +1109 -0
  253. package/dist/node/include/tracing/traced_value.h +129 -0
  254. package/dist/node/include/tty_wrap.h +65 -0
  255. package/dist/node/include/udp_wrap.h +230 -0
  256. package/dist/node/include/undici_version.h +6 -0
  257. package/dist/node/include/util-inl.h +700 -0
  258. package/dist/node/include/util.h +1021 -0
  259. package/dist/node/include/uv/aix.h +32 -0
  260. package/dist/node/include/uv/bsd.h +34 -0
  261. package/dist/node/include/uv/darwin.h +61 -0
  262. package/dist/node/include/uv/errno.h +483 -0
  263. package/dist/node/include/uv/linux.h +34 -0
  264. package/dist/node/include/uv/os390.h +33 -0
  265. package/dist/node/include/uv/posix.h +31 -0
  266. package/dist/node/include/uv/sunos.h +44 -0
  267. package/dist/node/include/uv/threadpool.h +37 -0
  268. package/dist/node/include/uv/tree.h +521 -0
  269. package/dist/node/include/uv/unix.h +512 -0
  270. package/dist/node/include/uv/version.h +43 -0
  271. package/dist/node/include/uv/win.h +698 -0
  272. package/dist/node/include/uv.h +1990 -0
  273. package/dist/node/include/v8-array-buffer.h +525 -0
  274. package/dist/node/include/v8-callbacks.h +462 -0
  275. package/dist/node/include/v8-container.h +183 -0
  276. package/dist/node/include/v8-context.h +485 -0
  277. package/dist/node/include/v8-cppgc.h +245 -0
  278. package/dist/node/include/v8-data.h +80 -0
  279. package/dist/node/include/v8-date.h +48 -0
  280. package/dist/node/include/v8-debug.h +168 -0
  281. package/dist/node/include/v8-embedder-heap.h +82 -0
  282. package/dist/node/include/v8-embedder-state-scope.h +52 -0
  283. package/dist/node/include/v8-exception.h +223 -0
  284. package/dist/node/include/v8-extension.h +62 -0
  285. package/dist/node/include/v8-external.h +37 -0
  286. package/dist/node/include/v8-fast-api-calls.h +984 -0
  287. package/dist/node/include/v8-forward.h +82 -0
  288. package/dist/node/include/v8-function-callback.h +607 -0
  289. package/dist/node/include/v8-function.h +140 -0
  290. package/dist/node/include/v8-handle-base.h +137 -0
  291. package/dist/node/include/v8-initialization.h +289 -0
  292. package/dist/node/include/v8-inspector-protocol.h +13 -0
  293. package/dist/node/include/v8-inspector.h +419 -0
  294. package/dist/node/include/v8-internal.h +1397 -0
  295. package/dist/node/include/v8-isolate.h +1767 -0
  296. package/dist/node/include/v8-json.h +47 -0
  297. package/dist/node/include/v8-local-handle.h +758 -0
  298. package/dist/node/include/v8-locker.h +138 -0
  299. package/dist/node/include/v8-maybe.h +160 -0
  300. package/dist/node/include/v8-memory-span.h +198 -0
  301. package/dist/node/include/v8-message.h +233 -0
  302. package/dist/node/include/v8-metrics.h +264 -0
  303. package/dist/node/include/v8-microtask-queue.h +157 -0
  304. package/dist/node/include/v8-microtask.h +28 -0
  305. package/dist/node/include/v8-object.h +824 -0
  306. package/dist/node/include/v8-persistent-handle.h +582 -0
  307. package/dist/node/include/v8-platform.h +1358 -0
  308. package/dist/node/include/v8-primitive-object.h +118 -0
  309. package/dist/node/include/v8-primitive.h +877 -0
  310. package/dist/node/include/v8-profiler.h +1302 -0
  311. package/dist/node/include/v8-promise.h +174 -0
  312. package/dist/node/include/v8-proxy.h +50 -0
  313. package/dist/node/include/v8-regexp.h +106 -0
  314. package/dist/node/include/v8-script.h +904 -0
  315. package/dist/node/include/v8-snapshot.h +266 -0
  316. package/dist/node/include/v8-source-location.h +92 -0
  317. package/dist/node/include/v8-statistics.h +238 -0
  318. package/dist/node/include/v8-template.h +1297 -0
  319. package/dist/node/include/v8-traced-handle.h +432 -0
  320. package/dist/node/include/v8-typed-array.h +390 -0
  321. package/dist/node/include/v8-unwinder-state.h +31 -0
  322. package/dist/node/include/v8-unwinder.h +132 -0
  323. package/dist/node/include/v8-util.h +665 -0
  324. package/dist/node/include/v8-value-serializer-version.h +24 -0
  325. package/dist/node/include/v8-value-serializer.h +316 -0
  326. package/dist/node/include/v8-value.h +655 -0
  327. package/dist/node/include/v8-version-string.h +38 -0
  328. package/dist/node/include/v8-version.h +20 -0
  329. package/dist/node/include/v8-wasm-trap-handler-posix.h +31 -0
  330. package/dist/node/include/v8-wasm-trap-handler-win.h +28 -0
  331. package/dist/node/include/v8-wasm.h +201 -0
  332. package/dist/node/include/v8-weak-callback-info.h +80 -0
  333. package/dist/node/include/v8.h +88 -0
  334. package/dist/node/include/v8config.h +981 -0
  335. package/dist/node/include/zlib_version.h +6 -0
  336. package/dist/node/libnode.dll +0 -0
  337. package/dist/node/libnode.lib +0 -0
  338. package/dist/node/libnodebuildinfo.json +10 -0
  339. package/dist/node/link_node.lib +0 -0
  340. package/dist/node/link_node.node +0 -0
  341. package/index.js +5 -0
  342. package/libnode.release.json +8 -0
  343. package/package.json +29 -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_