@encharm/cws 4.4.1 → 4.5.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/binding.gyp +1 -1
- package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node137.node +0 -0
- package/dist/bindings/cws_linux_arm64_node115.node +0 -0
- package/dist/bindings/cws_linux_arm64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node115.node +0 -0
- package/dist/bindings/cws_linux_x64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node137.node +0 -0
- package/dist/bindings/cws_win32_x64_node108.node +0 -0
- package/dist/bindings/cws_win32_x64_node115.node +0 -0
- package/dist/bindings/cws_win32_x64_node127.node +0 -0
- package/dist/bindings/cws_win32_x64_node83.node +0 -0
- package/dist/bindings/cws_win32_x64_node93.node +0 -0
- package/package.json +1 -1
- package/src/Addon.h +13 -23
- package/src/Socket.h +0 -1
- package/src/headers/22/acorn_version.h +6 -0
- package/src/headers/22/aliased_buffer-inl.h +243 -0
- package/src/headers/22/aliased_buffer.h +206 -0
- package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
- package/src/headers/{18 → 22}/async_wrap.h +65 -59
- package/src/headers/{18 → 22}/base_object-inl.h +57 -117
- package/src/headers/{18 → 22}/base_object.h +58 -30
- package/src/headers/22/base_object_types.h +74 -0
- package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/22/blob_serializer_deserializer.h +132 -0
- package/src/headers/{16 → 22}/callback_queue.h +1 -0
- package/src/headers/{16 → 22}/cares_wrap.h +27 -20
- package/src/headers/22/cjs_module_lexer_version.h +6 -0
- package/src/headers/22/cleanup_queue-inl.h +62 -0
- package/src/headers/22/cleanup_queue.h +85 -0
- package/src/headers/22/compile_cache.h +104 -0
- package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
- package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
- package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
- package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
- package/src/headers/22/crypto/ncrypto.h +752 -0
- package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
- package/src/headers/{18 → 22}/debug_utils.h +25 -19
- package/src/headers/22/encoding_binding.h +59 -0
- package/src/headers/{14 → 22}/env-inl.h +276 -409
- package/src/headers/22/env.h +1266 -0
- package/src/headers/22/env_properties.h +497 -0
- package/src/headers/{18 → 22}/handle_wrap.h +2 -0
- package/src/headers/{18 → 22}/histogram.h +88 -48
- package/src/headers/{16 → 22}/inspector_agent.h +17 -1
- package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
- package/src/headers/22/js_native_api.h +619 -0
- package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
- package/src/headers/22/js_native_api_v8.h +485 -0
- package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
- package/src/headers/22/json_parser.h +40 -0
- package/src/headers/{16 → 22}/json_utils.h +19 -8
- package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
- package/src/headers/{14 → 22}/memory_tracker.h +13 -8
- package/src/headers/{16 → 22}/module_wrap.h +49 -19
- package/src/headers/22/ncrypto/ncrypto.h +752 -0
- package/src/headers/{18 → 22}/node.h +465 -68
- package/src/headers/{18 → 22}/node_api.h +66 -81
- package/src/headers/{18 → 22}/node_api_internals.h +8 -4
- package/src/headers/{18 → 22}/node_api_types.h +5 -0
- package/src/headers/22/node_binding.h +154 -0
- package/src/headers/{18 → 22}/node_blob.h +46 -78
- package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
- package/src/headers/{18 → 22}/node_bob.h +2 -6
- package/src/headers/{18 → 22}/node_buffer.h +1 -1
- package/src/headers/22/node_builtins.h +220 -0
- package/src/headers/{18 → 22}/node_constants.h +3 -5
- package/src/headers/22/node_context_data.h +168 -0
- package/src/headers/22/node_contextify.h +199 -0
- package/src/headers/{16 → 22}/node_crypto.h +1 -2
- package/src/headers/22/node_dotenv.h +45 -0
- package/src/headers/{18 → 22}/node_errors.h +86 -27
- package/src/headers/22/node_exit_code.h +54 -0
- package/src/headers/22/node_external_reference.h +249 -0
- package/src/headers/{18 → 22}/node_file-inl.h +127 -30
- package/src/headers/{16 → 22}/node_file.h +122 -11
- package/src/headers/{18 → 22}/node_http2.h +28 -11
- package/src/headers/{16 → 22}/node_http2_state.h +34 -25
- package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
- package/src/headers/{18 → 22}/node_http_common.h +56 -55
- package/src/headers/{16 → 22}/node_i18n.h +5 -18
- package/src/headers/{18 → 22}/node_internals.h +121 -59
- package/src/headers/{18 → 22}/node_main_instance.h +4 -31
- package/src/headers/{18 → 22}/node_messaging.h +27 -10
- package/src/headers/{18 → 22}/node_metadata.h +23 -1
- package/src/headers/{18 → 22}/node_options-inl.h +24 -11
- package/src/headers/{18 → 22}/node_options.h +124 -39
- package/src/headers/{18 → 22}/node_perf.h +0 -2
- package/src/headers/{18 → 22}/node_perf_common.h +20 -9
- package/src/headers/{18 → 22}/node_platform.h +11 -5
- package/src/headers/{18 → 22}/node_process.h +26 -14
- package/src/headers/22/node_realm-inl.h +145 -0
- package/src/headers/22/node_realm.h +184 -0
- package/src/headers/{16 → 22}/node_report.h +13 -17
- package/src/headers/{16 → 22}/node_revert.h +3 -3
- package/src/headers/{16 → 22}/node_root_certs.h +902 -461
- package/src/headers/22/node_sea.h +64 -0
- package/src/headers/22/node_shadow_realm.h +46 -0
- package/src/headers/22/node_snapshot_builder.h +57 -0
- package/src/headers/22/node_snapshotable.h +174 -0
- package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
- package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
- package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/22/node_threadsafe_cow.h +105 -0
- package/src/headers/22/node_union_bytes.h +81 -0
- package/src/headers/22/node_url.h +96 -0
- package/src/headers/22/node_v8.h +77 -0
- package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
- package/src/headers/{16 → 22}/node_version.h +21 -9
- package/src/headers/22/node_wasi.h +185 -0
- package/src/headers/{14 → 22}/node_watchdog.h +2 -0
- package/src/headers/{18 → 22}/node_worker.h +7 -2
- package/src/headers/22/permission/child_process_permission.h +31 -0
- package/src/headers/22/permission/fs_permission.h +167 -0
- package/src/headers/22/permission/inspector_permission.h +31 -0
- package/src/headers/22/permission/permission.h +99 -0
- package/src/headers/22/permission/permission_base.h +60 -0
- package/src/headers/22/permission/wasi_permission.h +31 -0
- package/src/headers/22/permission/worker_permission.h +31 -0
- package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
- package/src/headers/{14 → 22}/spawn_sync.h +3 -3
- package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
- package/src/headers/{18 → 22}/stream_base.h +35 -16
- package/src/headers/{18 → 22}/stream_pipe.h +3 -4
- package/src/headers/{16 → 22}/stream_wrap.h +2 -1
- package/src/headers/{18 → 22}/string_bytes.h +5 -14
- package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
- package/src/headers/{16 → 22}/string_decoder.h +0 -1
- package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
- package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
- package/src/headers/22/timers.h +76 -0
- package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
- package/src/headers/{16 → 22}/udp_wrap.h +8 -5
- package/src/headers/22/undici_version.h +6 -0
- package/src/headers/{18 → 22}/util-inl.h +97 -127
- package/src/headers/{18 → 22}/util.h +293 -106
- package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
- package/src/headers/24/acorn_version.h +6 -0
- package/src/headers/24/addon_permission.h +31 -0
- package/src/headers/{16/tracing → 24}/agent.h +1 -1
- package/src/headers/24/aliased_buffer-inl.h +244 -0
- package/src/headers/24/aliased_buffer.h +206 -0
- package/src/headers/24/amaro_version.h +6 -0
- package/src/headers/24/application.h +165 -0
- package/src/headers/24/async_context_frame.h +33 -0
- package/src/headers/{14 → 24}/async_wrap-inl.h +8 -6
- package/src/headers/{16 → 24}/async_wrap.h +86 -88
- package/src/headers/{16 → 24}/base_object-inl.h +75 -119
- package/src/headers/{16 → 24}/base_object.h +84 -40
- package/src/headers/24/base_object_types.h +74 -0
- package/src/headers/24/bindingdata.h +272 -0
- package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/24/blob_serializer_deserializer.h +132 -0
- package/src/headers/{18 → 24}/callback_queue.h +1 -0
- package/src/headers/{18 → 24}/cares_wrap.h +68 -144
- package/src/headers/24/child_process_permission.h +31 -0
- package/src/headers/24/cid.h +127 -0
- package/src/headers/24/cjs_module_lexer_version.h +6 -0
- package/src/headers/24/cleanup_queue-inl.h +36 -0
- package/src/headers/24/cleanup_queue.h +79 -0
- package/src/headers/24/compile_cache.h +113 -0
- package/src/headers/24/cppgc_helpers-inl.h +65 -0
- package/src/headers/24/cppgc_helpers.h +162 -0
- package/src/headers/24/crypto/crypto_aes.h +97 -0
- package/src/headers/24/crypto/crypto_argon2.h +86 -0
- package/src/headers/{16 → 24}/crypto/crypto_bio.h +8 -9
- package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
- package/src/headers/{18 → 24}/crypto/crypto_cipher.h +48 -58
- package/src/headers/{16 → 24}/crypto/crypto_clienthello-inl.h +2 -2
- package/src/headers/{16 → 24}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/24/crypto/crypto_common.h +48 -0
- package/src/headers/{16 → 24}/crypto/crypto_context.h +46 -22
- package/src/headers/{18 → 24}/crypto/crypto_dh.h +27 -57
- package/src/headers/{18 → 24}/crypto/crypto_dsa.h +7 -34
- package/src/headers/{18 → 24}/crypto/crypto_ec.h +42 -49
- package/src/headers/{18 → 24}/crypto/crypto_hash.h +11 -11
- package/src/headers/{18 → 24}/crypto/crypto_hkdf.h +10 -14
- package/src/headers/{18 → 24}/crypto/crypto_hmac.h +11 -13
- package/src/headers/24/crypto/crypto_kem.h +113 -0
- package/src/headers/{18 → 24}/crypto/crypto_keygen.h +59 -74
- package/src/headers/{16 → 24}/crypto/crypto_keys.h +134 -154
- package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
- package/src/headers/{18 → 24}/crypto/crypto_pbkdf2.h +9 -11
- package/src/headers/{18 → 24}/crypto/crypto_random.h +28 -34
- package/src/headers/{18 → 24}/crypto/crypto_rsa.h +30 -35
- package/src/headers/{18 → 24}/crypto/crypto_scrypt.h +8 -10
- package/src/headers/{18 → 24}/crypto/crypto_sig.h +36 -48
- package/src/headers/{16 → 24}/crypto/crypto_tls.h +35 -18
- package/src/headers/{16 → 24}/crypto/crypto_util.h +183 -321
- package/src/headers/24/crypto/crypto_x509.h +140 -0
- package/src/headers/24/data.h +148 -0
- package/src/headers/{14 → 24}/debug_utils-inl.h +17 -8
- package/src/headers/{16 → 24}/debug_utils.h +31 -22
- package/src/headers/24/defs.h +254 -0
- package/src/headers/24/embedded_data.h +17 -0
- package/src/headers/24/encoding_binding.h +60 -0
- package/src/headers/24/endpoint.h +421 -0
- package/src/headers/{16 → 24}/env-inl.h +198 -540
- package/src/headers/24/env.h +1257 -0
- package/src/headers/24/env_properties.h +561 -0
- package/src/headers/24/fs_permission.h +167 -0
- package/src/headers/{16 → 24}/handle_wrap.h +4 -2
- package/src/headers/{16 → 24}/histogram-inl.h +34 -15
- package/src/headers/24/histogram.h +279 -0
- package/src/headers/24/http3.h +44 -0
- package/src/headers/{18 → 24}/inspector_agent.h +23 -2
- package/src/headers/24/inspector_permission.h +31 -0
- package/src/headers/{18 → 24}/inspector_profiler.h +15 -15
- package/src/headers/24/io_agent.h +30 -0
- package/src/headers/{18 → 24}/js_native_api.h +74 -30
- package/src/headers/{16 → 24}/js_native_api_types.h +61 -10
- package/src/headers/{18 → 24}/js_native_api_v8.h +205 -160
- package/src/headers/{16 → 24}/js_native_api_v8_internals.h +12 -6
- package/src/headers/24/json_parser.h +40 -0
- package/src/headers/{18 → 24}/json_utils.h +19 -8
- package/src/headers/24/logstream.h +81 -0
- package/src/headers/24/main_thread_interface.h +116 -0
- package/src/headers/{16 → 24}/memory_tracker-inl.h +115 -17
- package/src/headers/{16 → 24}/memory_tracker.h +58 -9
- package/src/headers/24/module_wrap.h +229 -0
- package/src/headers/24/ncrypto.h +1625 -0
- package/src/headers/24/network_agent.h +118 -0
- package/src/headers/24/network_inspector.h +45 -0
- package/src/headers/24/network_resource_manager.h +29 -0
- package/src/headers/{16 → 24}/node.h +560 -72
- package/src/headers/24/node_api.h +269 -0
- package/src/headers/24/node_api_internals.h +46 -0
- package/src/headers/{16 → 24}/node_api_types.h +13 -11
- package/src/headers/24/node_binding.h +163 -0
- package/src/headers/{16 → 24}/node_blob.h +46 -78
- package/src/headers/{16 → 24}/node_bob-inl.h +1 -2
- package/src/headers/{16 → 24}/node_bob.h +2 -6
- package/src/headers/{14 → 24}/node_buffer.h +1 -1
- package/src/headers/24/node_builtins.h +223 -0
- package/src/headers/24/node_config_file.h +65 -0
- package/src/headers/{14 → 24}/node_constants.h +3 -5
- package/src/headers/24/node_context_data.h +168 -0
- package/src/headers/24/node_contextify.h +261 -0
- package/src/headers/{18 → 24}/node_crypto.h +7 -2
- package/src/headers/24/node_debug.h +25 -0
- package/src/headers/24/node_dotenv.h +45 -0
- package/src/headers/{16 → 24}/node_errors.h +146 -32
- package/src/headers/24/node_exit_code.h +54 -0
- package/src/headers/{18 → 24}/node_external_reference.h +44 -22
- package/src/headers/{16 → 24}/node_file-inl.h +156 -50
- package/src/headers/{18 → 24}/node_file.h +129 -15
- package/src/headers/{16 → 24}/node_http2.h +53 -18
- package/src/headers/{14 → 24}/node_http2_state.h +35 -25
- package/src/headers/{16 → 24}/node_http_common-inl.h +8 -10
- package/src/headers/{16 → 24}/node_http_common.h +63 -59
- package/src/headers/{18 → 24}/node_i18n.h +5 -18
- package/src/headers/{16 → 24}/node_internals.h +131 -76
- package/src/headers/24/node_json.h +24 -0
- package/src/headers/24/node_large_page.h +34 -0
- package/src/headers/24/node_locks.h +180 -0
- package/src/headers/{14 → 24}/node_main_instance.h +15 -44
- package/src/headers/{16 → 24}/node_mem-inl.h +7 -7
- package/src/headers/{16 → 24}/node_messaging.h +27 -11
- package/src/headers/{16 → 24}/node_metadata.h +44 -2
- package/src/headers/24/node_modules.h +93 -0
- package/src/headers/{16 → 24}/node_options-inl.h +93 -46
- package/src/headers/{16 → 24}/node_options.h +251 -63
- package/src/headers/{16 → 24}/node_perf.h +6 -25
- package/src/headers/{16 → 24}/node_perf_common.h +23 -10
- package/src/headers/24/node_platform.h +286 -0
- package/src/headers/24/node_process.h +111 -0
- package/src/headers/24/node_realm-inl.h +153 -0
- package/src/headers/24/node_realm.h +236 -0
- package/src/headers/{18 → 24}/node_report.h +13 -17
- package/src/headers/{18 → 24}/node_revert.h +3 -3
- package/src/headers/{18 → 24}/node_root_certs.h +1010 -710
- package/src/headers/24/node_sea.h +74 -0
- package/src/headers/24/node_shadow_realm.h +46 -0
- package/src/headers/24/node_snapshot_builder.h +57 -0
- package/src/headers/24/node_snapshotable.h +174 -0
- package/src/headers/{16 → 24}/node_sockaddr-inl.h +11 -20
- package/src/headers/{16 → 24}/node_sockaddr.h +9 -20
- package/src/headers/24/node_sqlite.h +270 -0
- package/src/headers/{18 → 24}/node_stat_watcher.h +2 -1
- package/src/headers/24/node_string.h +101 -0
- package/src/headers/24/node_task_runner.h +92 -0
- package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/24/node_threadsafe_cow.h +105 -0
- package/src/headers/24/node_union_bytes.h +81 -0
- package/src/headers/24/node_url.h +101 -0
- package/src/headers/24/node_url_pattern.h +118 -0
- package/src/headers/24/node_v8.h +77 -0
- package/src/headers/{18 → 24}/node_v8_platform-inl.h +22 -31
- package/src/headers/{18 → 24}/node_version.h +18 -6
- package/src/headers/24/node_wasi.h +185 -0
- package/src/headers/24/node_wasm_web_api.h +55 -0
- package/src/headers/{18 → 24}/node_watchdog.h +2 -0
- package/src/headers/24/node_webstorage.h +60 -0
- package/src/headers/{16 → 24}/node_worker.h +24 -10
- package/src/headers/24/packet.h +155 -0
- package/src/headers/24/path.h +33 -0
- package/src/headers/24/permission/addon_permission.h +31 -0
- package/src/headers/24/permission/child_process_permission.h +31 -0
- package/src/headers/24/permission/fs_permission.h +167 -0
- package/src/headers/24/permission/inspector_permission.h +31 -0
- package/src/headers/24/permission/permission.h +100 -0
- package/src/headers/24/permission/permission_base.h +65 -0
- package/src/headers/24/permission/wasi_permission.h +31 -0
- package/src/headers/24/permission/worker_permission.h +31 -0
- package/src/headers/24/permission.h +100 -0
- package/src/headers/24/permission_base.h +65 -0
- package/src/headers/24/preferredaddress.h +72 -0
- package/src/headers/24/protocol_helper.h +27 -0
- package/src/headers/24/queue.h +306 -0
- package/src/headers/{18 → 24}/req_wrap-inl.h +12 -6
- package/src/headers/{16 → 24}/req_wrap.h +3 -1
- package/src/headers/24/runtime_agent.h +41 -0
- package/src/headers/24/session.h +528 -0
- package/src/headers/24/sessionticket.h +108 -0
- package/src/headers/{18 → 24}/spawn_sync.h +9 -8
- package/src/headers/{16 → 24}/stream_base-inl.h +3 -133
- package/src/headers/{16 → 24}/stream_base.h +43 -19
- package/src/headers/{16 → 24}/stream_pipe.h +7 -4
- package/src/headers/{18 → 24}/stream_wrap.h +2 -3
- package/src/headers/24/streams.h +370 -0
- package/src/headers/{16 → 24}/string_bytes.h +8 -21
- package/src/headers/{18 → 24}/string_decoder-inl.h +0 -6
- package/src/headers/{18 → 24}/string_decoder.h +0 -1
- package/src/headers/24/target_agent.h +75 -0
- package/src/headers/{16 → 24}/tcp_wrap.h +3 -1
- package/src/headers/{14 → 24}/threadpoolwork-inl.h +14 -1
- package/src/headers/24/timer_wrap-inl.h +32 -0
- package/src/headers/{16 → 24}/timer_wrap.h +7 -4
- package/src/headers/24/timers.h +75 -0
- package/src/headers/24/tlscontext.h +228 -0
- package/src/headers/24/tokens.h +256 -0
- package/src/headers/{14/tracing → 24}/trace_event.h +7 -5
- package/src/headers/24/traced_value.h +129 -0
- package/src/headers/24/tracing_agent.h +43 -0
- package/src/headers/24/transportparams.h +166 -0
- package/src/headers/{16 → 24}/tty_wrap.h +0 -1
- package/src/headers/{18 → 24}/udp_wrap.h +8 -5
- package/src/headers/24/undici_version.h +6 -0
- package/src/headers/{16 → 24}/util-inl.h +267 -131
- package/src/headers/{16 → 24}/util.h +338 -146
- package/src/headers/24/v8-external-memory-accounter.h +60 -0
- package/src/headers/24/v8-fast-api-calls.h +819 -0
- package/src/headers/24/v8-inspector.h +426 -0
- package/src/headers/24/wasi_permission.h +31 -0
- package/src/headers/24/worker_agent.h +40 -0
- package/src/headers/24/worker_inspector.h +124 -0
- package/src/headers/24/worker_permission.h +31 -0
- package/src/headers/24/zlib_version.h +6 -0
- package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
- package/dist/bindings/cws_darwin_x64_node83.node +0 -0
- package/dist/bindings/cws_darwin_x64_node93.node +0 -0
- package/dist/bindings/cws_linux_arm64_node83.node +0 -0
- package/dist/bindings/cws_linux_arm64_node93.node +0 -0
- package/dist/bindings/cws_linux_x64_node83.node +0 -0
- package/dist/bindings/cws_linux_x64_node93.node +0 -0
- package/src/headers/14/aliased_buffer.h +0 -263
- package/src/headers/14/allocated_buffer-inl.h +0 -110
- package/src/headers/14/allocated_buffer.h +0 -73
- package/src/headers/14/async_wrap.h +0 -230
- package/src/headers/14/base64.h +0 -183
- package/src/headers/14/base_object-inl.h +0 -371
- package/src/headers/14/base_object.h +0 -281
- package/src/headers/14/callback_queue-inl.h +0 -97
- package/src/headers/14/callback_queue.h +0 -78
- package/src/headers/14/debug_utils.h +0 -181
- package/src/headers/14/env.h +0 -1388
- package/src/headers/14/handle_wrap.h +0 -117
- package/src/headers/14/histogram-inl.h +0 -83
- package/src/headers/14/histogram.h +0 -98
- package/src/headers/14/inspector_agent.h +0 -149
- package/src/headers/14/inspector_profiler.h +0 -137
- package/src/headers/14/js_native_api.h +0 -544
- package/src/headers/14/js_native_api_types.h +0 -143
- package/src/headers/14/js_native_api_v8.h +0 -301
- package/src/headers/14/js_native_api_v8_internals.h +0 -38
- package/src/headers/14/json_utils.h +0 -161
- package/src/headers/14/memory_tracker-inl.h +0 -355
- package/src/headers/14/module_wrap.h +0 -99
- package/src/headers/14/node.h +0 -1032
- package/src/headers/14/node_api.h +0 -255
- package/src/headers/14/node_api_types.h +0 -44
- package/src/headers/14/node_binding.h +0 -99
- package/src/headers/14/node_context_data.h +0 -44
- package/src/headers/14/node_contextify.h +0 -161
- package/src/headers/14/node_crypto.h +0 -865
- package/src/headers/14/node_crypto_bio.h +0 -195
- package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/14/node_crypto_clienthello.h +0 -132
- package/src/headers/14/node_crypto_common.h +0 -138
- package/src/headers/14/node_crypto_groups.h +0 -415
- package/src/headers/14/node_dtrace.h +0 -86
- package/src/headers/14/node_errors.h +0 -214
- package/src/headers/14/node_file-inl.h +0 -306
- package/src/headers/14/node_file.h +0 -417
- package/src/headers/14/node_http2.h +0 -1191
- package/src/headers/14/node_http_common-inl.h +0 -194
- package/src/headers/14/node_http_common.h +0 -529
- package/src/headers/14/node_i18n.h +0 -144
- package/src/headers/14/node_internals.h +0 -405
- package/src/headers/14/node_mem.h +0 -45
- package/src/headers/14/node_messaging.h +0 -303
- package/src/headers/14/node_metadata.h +0 -109
- package/src/headers/14/node_mutex.h +0 -247
- package/src/headers/14/node_native_module.h +0 -101
- package/src/headers/14/node_native_module_env.h +0 -66
- package/src/headers/14/node_options-inl.h +0 -451
- package/src/headers/14/node_options.h +0 -481
- package/src/headers/14/node_perf.h +0 -181
- package/src/headers/14/node_perf_common.h +0 -97
- package/src/headers/14/node_platform.h +0 -189
- package/src/headers/14/node_process.h +0 -40
- package/src/headers/14/node_report.h +0 -47
- package/src/headers/14/node_revert.h +0 -72
- package/src/headers/14/node_root_certs.h +0 -3458
- package/src/headers/14/node_sockaddr-inl.h +0 -170
- package/src/headers/14/node_sockaddr.h +0 -123
- package/src/headers/14/node_stat_watcher.h +0 -70
- package/src/headers/14/node_union_bytes.h +0 -103
- package/src/headers/14/node_url.h +0 -188
- package/src/headers/14/node_version.h +0 -98
- package/src/headers/14/node_wasi.h +0 -108
- package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/14/node_win32_etw_provider.h +0 -99
- package/src/headers/14/node_worker.h +0 -141
- package/src/headers/14/pipe_wrap.h +0 -78
- package/src/headers/14/req_wrap-inl.h +0 -170
- package/src/headers/14/req_wrap.h +0 -77
- package/src/headers/14/stream_base-inl.h +0 -275
- package/src/headers/14/stream_base.h +0 -434
- package/src/headers/14/stream_pipe.h +0 -73
- package/src/headers/14/stream_wrap.h +0 -130
- package/src/headers/14/string_bytes.h +0 -129
- package/src/headers/14/string_decoder.h +0 -50
- package/src/headers/14/string_search.h +0 -638
- package/src/headers/14/tcp_wrap.h +0 -101
- package/src/headers/14/tls_wrap.h +0 -222
- package/src/headers/14/tracing/agent.h +0 -195
- package/src/headers/14/tracing/traced_value.h +0 -70
- package/src/headers/14/tty_wrap.h +0 -64
- package/src/headers/14/udp_wrap.h +0 -227
- package/src/headers/14/util-inl.h +0 -566
- package/src/headers/14/util.h +0 -804
- package/src/headers/14/v8abbr.h +0 -124
- package/src/headers/16/aliased_buffer.h +0 -315
- package/src/headers/16/allocated_buffer-inl.h +0 -110
- package/src/headers/16/allocated_buffer.h +0 -73
- package/src/headers/16/async_wrap-inl.h +0 -94
- package/src/headers/16/base64-inl.h +0 -189
- package/src/headers/16/base64.h +0 -69
- package/src/headers/16/crypto/crypto_aes.h +0 -89
- package/src/headers/16/crypto/crypto_cipher.h +0 -286
- package/src/headers/16/crypto/crypto_common.h +0 -187
- package/src/headers/16/crypto/crypto_dh.h +0 -157
- package/src/headers/16/crypto/crypto_dsa.h +0 -76
- package/src/headers/16/crypto/crypto_ec.h +0 -169
- package/src/headers/16/crypto/crypto_groups.h +0 -415
- package/src/headers/16/crypto/crypto_hash.h +0 -89
- package/src/headers/16/crypto/crypto_hkdf.h +0 -66
- package/src/headers/16/crypto/crypto_hmac.h +0 -94
- package/src/headers/16/crypto/crypto_keygen.h +0 -301
- package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
- package/src/headers/16/crypto/crypto_random.h +0 -130
- package/src/headers/16/crypto/crypto_rsa.h +0 -141
- package/src/headers/16/crypto/crypto_scrypt.h +0 -87
- package/src/headers/16/crypto/crypto_sig.h +0 -167
- package/src/headers/16/crypto/crypto_spkac.h +0 -20
- package/src/headers/16/crypto/crypto_timing.h +0 -20
- package/src/headers/16/crypto/crypto_x509.h +0 -141
- package/src/headers/16/env.h +0 -1629
- package/src/headers/16/histogram.h +0 -216
- package/src/headers/16/js_native_api.h +0 -561
- package/src/headers/16/js_native_api_v8.h +0 -451
- package/src/headers/16/node.d +0 -315
- package/src/headers/16/node.stp +0 -146
- package/src/headers/16/node_api.h +0 -275
- package/src/headers/16/node_api_internals.h +0 -30
- package/src/headers/16/node_binding.h +0 -99
- package/src/headers/16/node_buffer.h +0 -92
- package/src/headers/16/node_constants.h +0 -84
- package/src/headers/16/node_context_data.h +0 -44
- package/src/headers/16/node_contextify.h +0 -196
- package/src/headers/16/node_dtrace.h +0 -86
- package/src/headers/16/node_external_reference.h +0 -129
- package/src/headers/16/node_main_instance.h +0 -103
- package/src/headers/16/node_native_module.h +0 -101
- package/src/headers/16/node_native_module_env.h +0 -68
- package/src/headers/16/node_platform.h +0 -192
- package/src/headers/16/node_process.h +0 -43
- package/src/headers/16/node_provider.d +0 -80
- package/src/headers/16/node_snapshotable.h +0 -137
- package/src/headers/16/node_union_bytes.h +0 -103
- package/src/headers/16/node_url.h +0 -205
- package/src/headers/16/node_v8.h +0 -41
- package/src/headers/16/node_v8_platform-inl.h +0 -194
- package/src/headers/16/node_wasi.h +0 -108
- package/src/headers/16/node_watchdog.h +0 -152
- package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/16/node_win32_etw_provider.h +0 -99
- package/src/headers/16/spawn_sync.h +0 -242
- package/src/headers/16/string_decoder-inl.h +0 -37
- package/src/headers/16/string_search.h +0 -638
- package/src/headers/16/threadpoolwork-inl.h +0 -57
- package/src/headers/16/tracing/node_trace_buffer.h +0 -83
- package/src/headers/16/tracing/node_trace_writer.h +0 -75
- package/src/headers/16/tracing/trace_event.h +0 -720
- package/src/headers/16/tracing/traced_value.h +0 -70
- package/src/headers/16/v8abbr.h +0 -123
- package/src/headers/16/v8ustack.d +0 -695
- package/src/headers/18/aliased_buffer.h +0 -315
- package/src/headers/18/aliased_struct-inl.h +0 -54
- package/src/headers/18/aliased_struct.h +0 -63
- package/src/headers/18/base64-inl.h +0 -189
- package/src/headers/18/base64.h +0 -69
- package/src/headers/18/connect_wrap.h +0 -26
- package/src/headers/18/connection_wrap.h +0 -30
- package/src/headers/18/crypto/crypto_aes.h +0 -89
- package/src/headers/18/crypto/crypto_bio.h +0 -194
- package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
- package/src/headers/18/crypto/crypto_common.h +0 -151
- package/src/headers/18/crypto/crypto_groups.h +0 -415
- package/src/headers/18/crypto/crypto_x509.h +0 -143
- package/src/headers/18/debug_utils-inl.h +0 -223
- package/src/headers/18/diagnosticfilename-inl.h +0 -33
- package/src/headers/18/env-inl.h +0 -1308
- package/src/headers/18/env.h +0 -1667
- package/src/headers/18/inspector_io.h +0 -78
- package/src/headers/18/inspector_socket.h +0 -60
- package/src/headers/18/inspector_socket_server.h +0 -110
- package/src/headers/18/js_stream.h +0 -52
- package/src/headers/18/memory_tracker.h +0 -284
- package/src/headers/18/module_wrap.h +0 -116
- package/src/headers/18/node_binding.h +0 -99
- package/src/headers/18/node_context_data.h +0 -44
- package/src/headers/18/node_contextify.h +0 -196
- package/src/headers/18/node_dir.h +0 -52
- package/src/headers/18/node_dtrace.h +0 -86
- package/src/headers/18/node_http2_state.h +0 -149
- package/src/headers/18/node_mem-inl.h +0 -112
- package/src/headers/18/node_native_module.h +0 -109
- package/src/headers/18/node_native_module_env.h +0 -71
- package/src/headers/18/node_object_wrap.h +0 -132
- package/src/headers/18/node_snapshot_builder.h +0 -43
- package/src/headers/18/node_snapshotable.h +0 -130
- package/src/headers/18/node_union_bytes.h +0 -103
- package/src/headers/18/node_url.h +0 -205
- package/src/headers/18/node_v8.h +0 -41
- package/src/headers/18/node_wasi.h +0 -108
- package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/18/node_win32_etw_provider.h +0 -99
- package/src/headers/18/string_search.h +0 -638
- package/src/headers/18/tracing/node_trace_buffer.h +0 -83
- package/src/headers/18/tracing/node_trace_writer.h +0 -75
- package/src/headers/18/tracing/trace_event_common.h +0 -1109
- package/src/headers/18/tracing/traced_value.h +0 -70
- package/src/headers/18/v8abbr.h +0 -123
- /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
- /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
- /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
- /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
- /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
- /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
- /package/src/headers/{14 → 22}/inspector_io.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
- /package/src/headers/{14 → 22}/js_stream.h +0 -0
- /package/src/headers/{14 → 22}/node_dir.h +0 -0
- /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
- /package/src/headers/{16 → 22}/node_mem.h +0 -0
- /package/src/headers/{16 → 22}/node_mutex.h +0 -0
- /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
- /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
- /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
- /package/src/headers/{18 → 22}/req_wrap.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
- /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
- /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
- /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
- /package/src/headers/{16 → 24}/aliased_struct-inl.h +0 -0
- /package/src/headers/{16 → 24}/aliased_struct.h +0 -0
- /package/src/headers/{18 → 24}/callback_queue-inl.h +0 -0
- /package/src/headers/{16 → 24}/connect_wrap.h +0 -0
- /package/src/headers/{16 → 24}/connection_wrap.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_spkac.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_timing.h +0 -0
- /package/src/headers/{16 → 24}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{16 → 24}/inspector_io.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket_server.h +0 -0
- /package/src/headers/{16 → 24}/js_stream.h +0 -0
- /package/src/headers/{16 → 24}/node_dir.h +0 -0
- /package/src/headers/{18 → 24}/node_mem.h +0 -0
- /package/src/headers/{18 → 24}/node_mutex.h +0 -0
- /package/src/headers/{16 → 24}/node_object_wrap.h +0 -0
- /package/src/headers/{18 → 24}/node_process-inl.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_buffer.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_writer.h +0 -0
- /package/src/headers/{18 → 24}/pipe_wrap.h +0 -0
- /package/src/headers/{16/tracing → 24}/trace_event_common.h +0 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
#ifndef SRC_NODE_SQLITE_H_
|
|
2
|
+
#define SRC_NODE_SQLITE_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "base_object.h"
|
|
7
|
+
#include "node_mem.h"
|
|
8
|
+
#include "sqlite3.h"
|
|
9
|
+
#include "util.h"
|
|
10
|
+
|
|
11
|
+
#include <map>
|
|
12
|
+
#include <unordered_set>
|
|
13
|
+
|
|
14
|
+
namespace node {
|
|
15
|
+
namespace sqlite {
|
|
16
|
+
|
|
17
|
+
class DatabaseOpenConfiguration {
|
|
18
|
+
public:
|
|
19
|
+
explicit DatabaseOpenConfiguration(std::string&& location)
|
|
20
|
+
: location_(std::move(location)) {}
|
|
21
|
+
|
|
22
|
+
inline const std::string& location() const { return location_; }
|
|
23
|
+
|
|
24
|
+
inline bool get_read_only() const { return read_only_; }
|
|
25
|
+
|
|
26
|
+
inline void set_read_only(bool flag) { read_only_ = flag; }
|
|
27
|
+
|
|
28
|
+
inline bool get_enable_foreign_keys() const { return enable_foreign_keys_; }
|
|
29
|
+
|
|
30
|
+
inline void set_enable_foreign_keys(bool flag) {
|
|
31
|
+
enable_foreign_keys_ = flag;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
inline bool get_enable_dqs() const { return enable_dqs_; }
|
|
35
|
+
|
|
36
|
+
inline void set_enable_dqs(bool flag) { enable_dqs_ = flag; }
|
|
37
|
+
|
|
38
|
+
inline void set_timeout(int timeout) { timeout_ = timeout; }
|
|
39
|
+
|
|
40
|
+
inline int get_timeout() { return timeout_; }
|
|
41
|
+
|
|
42
|
+
inline void set_use_big_ints(bool flag) { use_big_ints_ = flag; }
|
|
43
|
+
|
|
44
|
+
inline bool get_use_big_ints() const { return use_big_ints_; }
|
|
45
|
+
|
|
46
|
+
inline void set_return_arrays(bool flag) { return_arrays_ = flag; }
|
|
47
|
+
|
|
48
|
+
inline bool get_return_arrays() const { return return_arrays_; }
|
|
49
|
+
|
|
50
|
+
inline void set_allow_bare_named_params(bool flag) {
|
|
51
|
+
allow_bare_named_params_ = flag;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
inline bool get_allow_bare_named_params() const {
|
|
55
|
+
return allow_bare_named_params_;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
inline void set_allow_unknown_named_params(bool flag) {
|
|
59
|
+
allow_unknown_named_params_ = flag;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
inline bool get_allow_unknown_named_params() const {
|
|
63
|
+
return allow_unknown_named_params_;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private:
|
|
67
|
+
std::string location_;
|
|
68
|
+
bool read_only_ = false;
|
|
69
|
+
bool enable_foreign_keys_ = true;
|
|
70
|
+
bool enable_dqs_ = false;
|
|
71
|
+
int timeout_ = 0;
|
|
72
|
+
bool use_big_ints_ = false;
|
|
73
|
+
bool return_arrays_ = false;
|
|
74
|
+
bool allow_bare_named_params_ = true;
|
|
75
|
+
bool allow_unknown_named_params_ = false;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
class StatementSync;
|
|
79
|
+
class BackupJob;
|
|
80
|
+
|
|
81
|
+
class DatabaseSync : public BaseObject {
|
|
82
|
+
public:
|
|
83
|
+
DatabaseSync(Environment* env,
|
|
84
|
+
v8::Local<v8::Object> object,
|
|
85
|
+
DatabaseOpenConfiguration&& open_config,
|
|
86
|
+
bool open,
|
|
87
|
+
bool allow_load_extension);
|
|
88
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
89
|
+
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
90
|
+
static void Open(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
91
|
+
static void IsOpenGetter(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
92
|
+
static void IsTransactionGetter(
|
|
93
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
94
|
+
static void Close(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
95
|
+
static void Prepare(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
96
|
+
static void Exec(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
97
|
+
static void Location(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
98
|
+
static void CustomFunction(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
99
|
+
static void AggregateFunction(
|
|
100
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
101
|
+
static void CreateSession(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
102
|
+
static void ApplyChangeset(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
103
|
+
static void EnableLoadExtension(
|
|
104
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
105
|
+
static void LoadExtension(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
106
|
+
void FinalizeStatements();
|
|
107
|
+
void RemoveBackup(BackupJob* backup);
|
|
108
|
+
void AddBackup(BackupJob* backup);
|
|
109
|
+
void FinalizeBackups();
|
|
110
|
+
void UntrackStatement(StatementSync* statement);
|
|
111
|
+
bool IsOpen();
|
|
112
|
+
bool use_big_ints() const { return open_config_.get_use_big_ints(); }
|
|
113
|
+
bool return_arrays() const { return open_config_.get_return_arrays(); }
|
|
114
|
+
bool allow_bare_named_params() const {
|
|
115
|
+
return open_config_.get_allow_bare_named_params();
|
|
116
|
+
}
|
|
117
|
+
bool allow_unknown_named_params() const {
|
|
118
|
+
return open_config_.get_allow_unknown_named_params();
|
|
119
|
+
}
|
|
120
|
+
sqlite3* Connection();
|
|
121
|
+
|
|
122
|
+
// In some situations, such as when using custom functions, it is possible
|
|
123
|
+
// that SQLite reports an error while JavaScript already has a pending
|
|
124
|
+
// exception. In this case, the SQLite error should be ignored. These methods
|
|
125
|
+
// enable that use case.
|
|
126
|
+
void SetIgnoreNextSQLiteError(bool ignore);
|
|
127
|
+
bool ShouldIgnoreSQLiteError();
|
|
128
|
+
|
|
129
|
+
SET_MEMORY_INFO_NAME(DatabaseSync)
|
|
130
|
+
SET_SELF_SIZE(DatabaseSync)
|
|
131
|
+
|
|
132
|
+
private:
|
|
133
|
+
bool Open();
|
|
134
|
+
void DeleteSessions();
|
|
135
|
+
|
|
136
|
+
~DatabaseSync() override;
|
|
137
|
+
DatabaseOpenConfiguration open_config_;
|
|
138
|
+
bool allow_load_extension_;
|
|
139
|
+
bool enable_load_extension_;
|
|
140
|
+
sqlite3* connection_;
|
|
141
|
+
bool ignore_next_sqlite_error_;
|
|
142
|
+
|
|
143
|
+
std::set<BackupJob*> backups_;
|
|
144
|
+
std::set<sqlite3_session*> sessions_;
|
|
145
|
+
std::unordered_set<StatementSync*> statements_;
|
|
146
|
+
|
|
147
|
+
friend class Session;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
class StatementSync : public BaseObject {
|
|
151
|
+
public:
|
|
152
|
+
StatementSync(Environment* env,
|
|
153
|
+
v8::Local<v8::Object> object,
|
|
154
|
+
BaseObjectPtr<DatabaseSync> db,
|
|
155
|
+
sqlite3_stmt* stmt);
|
|
156
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
157
|
+
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
|
|
158
|
+
Environment* env);
|
|
159
|
+
static BaseObjectPtr<StatementSync> Create(Environment* env,
|
|
160
|
+
BaseObjectPtr<DatabaseSync> db,
|
|
161
|
+
sqlite3_stmt* stmt);
|
|
162
|
+
static void All(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
163
|
+
static void Iterate(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
164
|
+
static void Get(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
165
|
+
static void Run(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
166
|
+
static void Columns(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
167
|
+
static void SourceSQLGetter(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
168
|
+
static void ExpandedSQLGetter(
|
|
169
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
170
|
+
static void SetAllowBareNamedParameters(
|
|
171
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
172
|
+
static void SetAllowUnknownNamedParameters(
|
|
173
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
174
|
+
static void SetReadBigInts(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
175
|
+
static void SetReturnArrays(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
176
|
+
void Finalize();
|
|
177
|
+
bool IsFinalized();
|
|
178
|
+
|
|
179
|
+
SET_MEMORY_INFO_NAME(StatementSync)
|
|
180
|
+
SET_SELF_SIZE(StatementSync)
|
|
181
|
+
|
|
182
|
+
private:
|
|
183
|
+
~StatementSync() override;
|
|
184
|
+
BaseObjectPtr<DatabaseSync> db_;
|
|
185
|
+
sqlite3_stmt* statement_;
|
|
186
|
+
bool return_arrays_ = false;
|
|
187
|
+
bool use_big_ints_;
|
|
188
|
+
bool allow_bare_named_params_;
|
|
189
|
+
bool allow_unknown_named_params_;
|
|
190
|
+
std::optional<std::map<std::string, std::string>> bare_named_params_;
|
|
191
|
+
bool BindParams(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
192
|
+
bool BindValue(const v8::Local<v8::Value>& value, const int index);
|
|
193
|
+
v8::MaybeLocal<v8::Value> ColumnToValue(const int column);
|
|
194
|
+
v8::MaybeLocal<v8::Name> ColumnNameToName(const int column);
|
|
195
|
+
|
|
196
|
+
friend class StatementSyncIterator;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
class StatementSyncIterator : public BaseObject {
|
|
200
|
+
public:
|
|
201
|
+
StatementSyncIterator(Environment* env,
|
|
202
|
+
v8::Local<v8::Object> object,
|
|
203
|
+
BaseObjectPtr<StatementSync> stmt);
|
|
204
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
205
|
+
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
|
|
206
|
+
Environment* env);
|
|
207
|
+
static BaseObjectPtr<StatementSyncIterator> Create(
|
|
208
|
+
Environment* env, BaseObjectPtr<StatementSync> stmt);
|
|
209
|
+
static void Next(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
210
|
+
static void Return(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
211
|
+
|
|
212
|
+
SET_MEMORY_INFO_NAME(StatementSyncIterator)
|
|
213
|
+
SET_SELF_SIZE(StatementSyncIterator)
|
|
214
|
+
|
|
215
|
+
private:
|
|
216
|
+
~StatementSyncIterator() override;
|
|
217
|
+
BaseObjectPtr<StatementSync> stmt_;
|
|
218
|
+
bool done_;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
using Sqlite3ChangesetGenFunc = int (*)(sqlite3_session*, int*, void**);
|
|
222
|
+
|
|
223
|
+
class Session : public BaseObject {
|
|
224
|
+
public:
|
|
225
|
+
Session(Environment* env,
|
|
226
|
+
v8::Local<v8::Object> object,
|
|
227
|
+
BaseObjectWeakPtr<DatabaseSync> database,
|
|
228
|
+
sqlite3_session* session);
|
|
229
|
+
~Session() override;
|
|
230
|
+
template <Sqlite3ChangesetGenFunc sqliteChangesetFunc>
|
|
231
|
+
static void Changeset(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
232
|
+
static void Close(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
233
|
+
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
|
|
234
|
+
Environment* env);
|
|
235
|
+
static BaseObjectPtr<Session> Create(Environment* env,
|
|
236
|
+
BaseObjectWeakPtr<DatabaseSync> database,
|
|
237
|
+
sqlite3_session* session);
|
|
238
|
+
|
|
239
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
240
|
+
SET_MEMORY_INFO_NAME(Session)
|
|
241
|
+
SET_SELF_SIZE(Session)
|
|
242
|
+
|
|
243
|
+
private:
|
|
244
|
+
void Delete();
|
|
245
|
+
sqlite3_session* session_;
|
|
246
|
+
BaseObjectWeakPtr<DatabaseSync> database_; // The Parent Database
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
class UserDefinedFunction {
|
|
250
|
+
public:
|
|
251
|
+
UserDefinedFunction(Environment* env,
|
|
252
|
+
v8::Local<v8::Function> fn,
|
|
253
|
+
DatabaseSync* db,
|
|
254
|
+
bool use_bigint_args);
|
|
255
|
+
~UserDefinedFunction();
|
|
256
|
+
static void xFunc(sqlite3_context* ctx, int argc, sqlite3_value** argv);
|
|
257
|
+
static void xDestroy(void* self);
|
|
258
|
+
|
|
259
|
+
private:
|
|
260
|
+
Environment* env_;
|
|
261
|
+
v8::Global<v8::Function> fn_;
|
|
262
|
+
DatabaseSync* db_;
|
|
263
|
+
bool use_bigint_args_;
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
} // namespace sqlite
|
|
267
|
+
} // namespace node
|
|
268
|
+
|
|
269
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
270
|
+
#endif // SRC_NODE_SQLITE_H_
|
|
@@ -39,7 +39,8 @@ class ExternalReferenceRegistry;
|
|
|
39
39
|
|
|
40
40
|
class StatWatcher : public HandleWrap {
|
|
41
41
|
public:
|
|
42
|
-
static void
|
|
42
|
+
static void CreatePerIsolateProperties(IsolateData* isolate_data,
|
|
43
|
+
v8::Local<v8::ObjectTemplate> ctor);
|
|
43
44
|
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
44
45
|
|
|
45
46
|
protected:
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// Bridges V8 Inspector generated code with the std::string used by the Node
|
|
2
|
+
// Compare to V8 counterpart - deps/v8/src/inspector/string-util.h
|
|
3
|
+
#ifndef SRC_INSPECTOR_NODE_STRING_H_
|
|
4
|
+
#define SRC_INSPECTOR_NODE_STRING_H_
|
|
5
|
+
|
|
6
|
+
#include <cstring>
|
|
7
|
+
#include <sstream>
|
|
8
|
+
#include <string>
|
|
9
|
+
#include "crdtp/protocol_core.h"
|
|
10
|
+
#include "util.h"
|
|
11
|
+
#include "v8-inspector.h"
|
|
12
|
+
|
|
13
|
+
namespace node::inspector::protocol {
|
|
14
|
+
class Binary;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
namespace crdtp {
|
|
18
|
+
|
|
19
|
+
template <>
|
|
20
|
+
struct ProtocolTypeTraits<std::string> {
|
|
21
|
+
static bool Deserialize(DeserializerState* state, std::string* value);
|
|
22
|
+
static void Serialize(const std::string& value, std::vector<uint8_t>* bytes);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
template <>
|
|
26
|
+
struct ProtocolTypeTraits<node::inspector::protocol::Binary> {
|
|
27
|
+
static bool Deserialize(DeserializerState* state,
|
|
28
|
+
node::inspector::protocol::Binary* value);
|
|
29
|
+
static void Serialize(const node::inspector::protocol::Binary& value,
|
|
30
|
+
std::vector<uint8_t>* bytes);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
} // namespace crdtp
|
|
34
|
+
|
|
35
|
+
namespace node {
|
|
36
|
+
namespace inspector {
|
|
37
|
+
namespace protocol {
|
|
38
|
+
|
|
39
|
+
class Value;
|
|
40
|
+
|
|
41
|
+
using String = std::string;
|
|
42
|
+
using StringBuilder = std::ostringstream;
|
|
43
|
+
using ProtocolMessage = std::string;
|
|
44
|
+
|
|
45
|
+
// Implements StringUtil methods used in `inspector_protocol/lib/`.
|
|
46
|
+
// Refer to
|
|
47
|
+
// https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/inspector/v8_inspector_string.h;l=40;drc=2b15d6974a49d3a14d3d67ae099a649d523a828d
|
|
48
|
+
// for more details about the interface.
|
|
49
|
+
struct StringUtil {
|
|
50
|
+
// Convert Utf16 in local endianness to Utf8 if needed.
|
|
51
|
+
static String StringViewToUtf8(v8_inspector::StringView view);
|
|
52
|
+
static String fromUTF16(const uint16_t* data, size_t length);
|
|
53
|
+
|
|
54
|
+
static String fromUTF8(const uint8_t* data, size_t length);
|
|
55
|
+
static String fromUTF16LE(const uint16_t* data, size_t length);
|
|
56
|
+
static const uint8_t* CharactersUTF8(const std::string_view s);
|
|
57
|
+
static size_t CharacterCount(const std::string_view s);
|
|
58
|
+
|
|
59
|
+
// Unimplemented. The generated code will fall back to CharactersUTF8().
|
|
60
|
+
inline static uint8_t* CharactersLatin1(const std::string_view s) {
|
|
61
|
+
return nullptr;
|
|
62
|
+
}
|
|
63
|
+
inline static const uint16_t* CharactersUTF16(const std::string_view s) {
|
|
64
|
+
return nullptr;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// A read-only sequence of uninterpreted bytes with reference-counted storage.
|
|
69
|
+
class Binary {
|
|
70
|
+
public:
|
|
71
|
+
Binary() : bytes_(std::make_shared<std::vector<uint8_t>>()) {}
|
|
72
|
+
|
|
73
|
+
const uint8_t* data() const { return bytes_->data(); }
|
|
74
|
+
size_t size() const { return bytes_->size(); }
|
|
75
|
+
|
|
76
|
+
String toBase64() const;
|
|
77
|
+
|
|
78
|
+
static Binary concat(const std::vector<Binary>& binaries);
|
|
79
|
+
|
|
80
|
+
static Binary fromBase64(const String& base64, bool* success);
|
|
81
|
+
static Binary fromUint8Array(v8::Local<v8::Uint8Array> data);
|
|
82
|
+
static Binary fromSpan(const uint8_t* data, size_t size) {
|
|
83
|
+
return Binary::fromSpan(crdtp::span<uint8_t>(data, size));
|
|
84
|
+
}
|
|
85
|
+
static Binary fromSpan(crdtp::span<uint8_t> span) {
|
|
86
|
+
return Binary(
|
|
87
|
+
std::make_shared<std::vector<uint8_t>>(span.begin(), span.end()));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
private:
|
|
91
|
+
std::shared_ptr<std::vector<uint8_t>> bytes_;
|
|
92
|
+
|
|
93
|
+
explicit Binary(std::shared_ptr<std::vector<uint8_t>> bytes)
|
|
94
|
+
: bytes_(bytes) {}
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
} // namespace protocol
|
|
98
|
+
} // namespace inspector
|
|
99
|
+
} // namespace node
|
|
100
|
+
|
|
101
|
+
#endif // SRC_INSPECTOR_NODE_STRING_H_
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#ifndef SRC_NODE_TASK_RUNNER_H_
|
|
2
|
+
#define SRC_NODE_TASK_RUNNER_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "node_internals.h"
|
|
7
|
+
#include "simdjson.h"
|
|
8
|
+
#include "spawn_sync.h"
|
|
9
|
+
#include "uv.h"
|
|
10
|
+
|
|
11
|
+
#include <filesystem>
|
|
12
|
+
#include <optional>
|
|
13
|
+
#include <string_view>
|
|
14
|
+
#include <tuple>
|
|
15
|
+
|
|
16
|
+
namespace node::task_runner {
|
|
17
|
+
|
|
18
|
+
using PositionalArgs = std::vector<std::string_view>;
|
|
19
|
+
|
|
20
|
+
// ProcessRunner is the class responsible for running a process.
|
|
21
|
+
// A class instance is created for each process to be run.
|
|
22
|
+
// The class is responsible for spawning the process and handling its exit.
|
|
23
|
+
// The class also handles the environment variables and arguments.
|
|
24
|
+
class ProcessRunner {
|
|
25
|
+
public:
|
|
26
|
+
ProcessRunner(std::shared_ptr<InitializationResultImpl> result,
|
|
27
|
+
const std::filesystem::path& package_json_path,
|
|
28
|
+
std::string_view script_name,
|
|
29
|
+
std::string_view command,
|
|
30
|
+
std::string_view path_env_var,
|
|
31
|
+
const PositionalArgs& positional_args);
|
|
32
|
+
void Run();
|
|
33
|
+
static void ExitCallback(uv_process_t* req,
|
|
34
|
+
int64_t exit_status,
|
|
35
|
+
int term_signal);
|
|
36
|
+
|
|
37
|
+
private:
|
|
38
|
+
uv_loop_t* loop_ = uv_default_loop();
|
|
39
|
+
uv_process_t process_{};
|
|
40
|
+
uv_process_options_t options_{};
|
|
41
|
+
uv_stdio_container_t child_stdio[3]{};
|
|
42
|
+
std::shared_ptr<InitializationResultImpl> init_result;
|
|
43
|
+
std::vector<std::string> command_args_{};
|
|
44
|
+
std::vector<std::string> env_vars_{};
|
|
45
|
+
std::unique_ptr<char* []> env {}; // memory for options_.env
|
|
46
|
+
std::unique_ptr<char* []> arg {}; // memory for options_.args
|
|
47
|
+
std::string cwd;
|
|
48
|
+
|
|
49
|
+
// OnExit is the callback function that is called when the process exits.
|
|
50
|
+
void OnExit(int64_t exit_status, int term_signal);
|
|
51
|
+
void SetEnvironmentVariables();
|
|
52
|
+
|
|
53
|
+
#ifdef _WIN32
|
|
54
|
+
std::string file_ = "cmd.exe";
|
|
55
|
+
#else
|
|
56
|
+
std::string file_ = "/bin/sh";
|
|
57
|
+
#endif // _WIN32
|
|
58
|
+
|
|
59
|
+
// Represents the absolute path to the package.json file.
|
|
60
|
+
std::filesystem::path package_json_path_;
|
|
61
|
+
// Represents the name of the script that is being run.
|
|
62
|
+
std::string script_name_;
|
|
63
|
+
// Represents PATH environment variable that contains
|
|
64
|
+
// all subdirectory paths appended with node_modules/.bin suffix.
|
|
65
|
+
std::string path_env_var_;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// This function traverses up to the root directory.
|
|
69
|
+
// While traversing up, if it finds a package.json file, it reads its content.
|
|
70
|
+
// If it cannot find a package.json file, it returns std::nullopt.
|
|
71
|
+
// Otherwise, it returns a tuple of:
|
|
72
|
+
// - the path to the package.json file
|
|
73
|
+
// - package.json file content
|
|
74
|
+
// - `path_env_var` variable
|
|
75
|
+
//
|
|
76
|
+
// For example, on POSIX, it returns the following for `path_env_var`,
|
|
77
|
+
// if the current directory is `/anonrig`:
|
|
78
|
+
// `/anonrig/node_modules/.bin:/node_modules/.bin`
|
|
79
|
+
std::optional<std::tuple<std::filesystem::path, std::string, std::string>>
|
|
80
|
+
FindPackageJson(const std::filesystem::path& cwd);
|
|
81
|
+
|
|
82
|
+
void RunTask(const std::shared_ptr<InitializationResultImpl>& result,
|
|
83
|
+
std::string_view command_id,
|
|
84
|
+
const PositionalArgs& positional_args);
|
|
85
|
+
PositionalArgs GetPositionalArgs(const std::vector<std::string>& args);
|
|
86
|
+
std::string EscapeShell(std::string_view command);
|
|
87
|
+
|
|
88
|
+
} // namespace node::task_runner
|
|
89
|
+
|
|
90
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
91
|
+
|
|
92
|
+
#endif // SRC_NODE_TASK_RUNNER_H_
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#ifndef SRC_NODE_THREADSAFE_COW_INL_H_
|
|
2
|
+
#define SRC_NODE_THREADSAFE_COW_INL_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
namespace node {
|
|
7
|
+
|
|
8
|
+
template <typename T>
|
|
9
|
+
T* CopyOnWrite<T>::write() {
|
|
10
|
+
if (data_.use_count() > 1l) {
|
|
11
|
+
data_ = std::make_shared<T>(*data_);
|
|
12
|
+
}
|
|
13
|
+
return data_.get();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
template <typename T>
|
|
17
|
+
ThreadsafeCopyOnWrite<T>::Read::Read(const ThreadsafeCopyOnWrite<T>* cow)
|
|
18
|
+
: cow_(cow), lock_(cow->impl_->mutex) {}
|
|
19
|
+
|
|
20
|
+
template <typename T>
|
|
21
|
+
const T& ThreadsafeCopyOnWrite<T>::Read::operator*() const {
|
|
22
|
+
return cow_->impl_->data;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
template <typename T>
|
|
26
|
+
const T* ThreadsafeCopyOnWrite<T>::Read::operator->() const {
|
|
27
|
+
return &cow_->impl_->data;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
template <typename T>
|
|
31
|
+
ThreadsafeCopyOnWrite<T>::Write::Write(ThreadsafeCopyOnWrite<T>* cow)
|
|
32
|
+
: cow_(cow), impl_(cow->impl_.write()), lock_(impl_->mutex) {}
|
|
33
|
+
|
|
34
|
+
template <typename T>
|
|
35
|
+
T& ThreadsafeCopyOnWrite<T>::Write::operator*() {
|
|
36
|
+
return impl_->data;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
template <typename T>
|
|
40
|
+
T* ThreadsafeCopyOnWrite<T>::Write::operator->() {
|
|
41
|
+
return &impl_->data;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
template <typename T>
|
|
45
|
+
ThreadsafeCopyOnWrite<T>::Impl::Impl(const Impl& other) {
|
|
46
|
+
RwLock::ScopedReadLock lock(other.mutex);
|
|
47
|
+
data = other.data;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
} // namespace node
|
|
51
|
+
|
|
52
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
53
|
+
|
|
54
|
+
#endif // SRC_NODE_THREADSAFE_COW_INL_H_
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#ifndef SRC_NODE_THREADSAFE_COW_H_
|
|
2
|
+
#define SRC_NODE_THREADSAFE_COW_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "util.h"
|
|
7
|
+
#include "uv.h"
|
|
8
|
+
|
|
9
|
+
#include <memory> // std::shared_ptr<T>
|
|
10
|
+
#include <utility> // std::forward<T>
|
|
11
|
+
|
|
12
|
+
namespace node {
|
|
13
|
+
|
|
14
|
+
// Copy-on-write utility. Not threadsafe, i.e. there is no synchronization
|
|
15
|
+
// of the copy operation with other operations.
|
|
16
|
+
template <typename T>
|
|
17
|
+
class CopyOnWrite final {
|
|
18
|
+
public:
|
|
19
|
+
template <typename... Args>
|
|
20
|
+
explicit CopyOnWrite(Args&&... args)
|
|
21
|
+
: data_(std::make_shared<T>(std::forward<Args>(args)...)) {}
|
|
22
|
+
|
|
23
|
+
CopyOnWrite(const CopyOnWrite<T>& other) = default;
|
|
24
|
+
CopyOnWrite& operator=(const CopyOnWrite<T>& other) = default;
|
|
25
|
+
CopyOnWrite(CopyOnWrite<T>&& other) = default;
|
|
26
|
+
CopyOnWrite& operator=(CopyOnWrite<T>&& other) = default;
|
|
27
|
+
|
|
28
|
+
const T* read() const { return data_.get(); }
|
|
29
|
+
T* write();
|
|
30
|
+
|
|
31
|
+
const T& operator*() const { return *read(); }
|
|
32
|
+
const T* operator->() const { return read(); }
|
|
33
|
+
|
|
34
|
+
private:
|
|
35
|
+
std::shared_ptr<T> data_;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// Threadsafe copy-on-write utility. Consumers need to use the Read and
|
|
39
|
+
// Write helpers to access the target data structure.
|
|
40
|
+
template <typename T>
|
|
41
|
+
class ThreadsafeCopyOnWrite final {
|
|
42
|
+
private:
|
|
43
|
+
// Define this early since some of the public members depend on it
|
|
44
|
+
// and some compilers need it to be defined first in that case.
|
|
45
|
+
struct Impl {
|
|
46
|
+
explicit Impl(const T& data) : data(data) {}
|
|
47
|
+
explicit Impl(T&& data) : data(std::move(data)) {}
|
|
48
|
+
|
|
49
|
+
Impl(const Impl& other);
|
|
50
|
+
Impl& operator=(const Impl& other) = delete;
|
|
51
|
+
Impl(Impl&& other) = delete;
|
|
52
|
+
Impl& operator=(Impl&& other) = delete;
|
|
53
|
+
|
|
54
|
+
RwLock mutex;
|
|
55
|
+
T data;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
public:
|
|
59
|
+
template <typename... Args>
|
|
60
|
+
ThreadsafeCopyOnWrite(Args&&... args)
|
|
61
|
+
: impl_(T(std::forward<Args>(args)...)) {}
|
|
62
|
+
|
|
63
|
+
ThreadsafeCopyOnWrite(const ThreadsafeCopyOnWrite<T>& other) = default;
|
|
64
|
+
ThreadsafeCopyOnWrite& operator=(const ThreadsafeCopyOnWrite<T>& other) =
|
|
65
|
+
default;
|
|
66
|
+
ThreadsafeCopyOnWrite(ThreadsafeCopyOnWrite<T>&& other) = default;
|
|
67
|
+
ThreadsafeCopyOnWrite& operator=(ThreadsafeCopyOnWrite<T>&& other) = default;
|
|
68
|
+
|
|
69
|
+
class Read {
|
|
70
|
+
public:
|
|
71
|
+
explicit Read(const ThreadsafeCopyOnWrite<T>* cow);
|
|
72
|
+
|
|
73
|
+
const T& operator*() const;
|
|
74
|
+
const T* operator->() const;
|
|
75
|
+
|
|
76
|
+
private:
|
|
77
|
+
const ThreadsafeCopyOnWrite<T>* cow_;
|
|
78
|
+
RwLock::ScopedReadLock lock_;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
class Write {
|
|
82
|
+
public:
|
|
83
|
+
explicit Write(ThreadsafeCopyOnWrite<T>* cow);
|
|
84
|
+
|
|
85
|
+
T& operator*();
|
|
86
|
+
T* operator->();
|
|
87
|
+
|
|
88
|
+
private:
|
|
89
|
+
ThreadsafeCopyOnWrite<T>* cow_;
|
|
90
|
+
typename ThreadsafeCopyOnWrite<T>::Impl* impl_;
|
|
91
|
+
RwLock::ScopedLock lock_;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
Read read() const { return Read(this); }
|
|
95
|
+
Write write() { return Write(this); }
|
|
96
|
+
|
|
97
|
+
private:
|
|
98
|
+
CopyOnWrite<Impl> impl_;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
} // namespace node
|
|
102
|
+
|
|
103
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
104
|
+
|
|
105
|
+
#endif // SRC_NODE_THREADSAFE_COW_H_
|