@encharm/cws 4.1.0 → 4.2.0
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/bindings/cws_linux_108.node +0 -0
- package/dist/bindings/cws_linux_64.node +0 -0
- package/dist/bindings/cws_linux_72.node +0 -0
- package/dist/bindings/cws_linux_79.node +0 -0
- package/dist/bindings/cws_linux_83.node +0 -0
- package/dist/bindings/cws_linux_93.node +0 -0
- package/dist/bindings/cws_win32_64.node +0 -0
- package/dist/bindings/cws_win32_72.node +0 -0
- package/dist/bindings/cws_win32_79.node +0 -0
- package/dist/bindings/cws_win32_83.node +0 -0
- package/dist/bindings/cws_win32_93.node +0 -0
- package/package.json +1 -1
- package/src/Addon.h +24 -2
- package/src/HTTPSocket.cpp +1 -1
- package/src/headers/{13 → 18}/aliased_buffer.h +61 -9
- package/src/headers/18/aliased_struct-inl.h +54 -0
- package/src/headers/18/aliased_struct.h +63 -0
- package/src/headers/{12 → 18}/async_wrap-inl.h +0 -0
- package/src/headers/{12 → 18}/async_wrap.h +26 -2
- package/src/headers/{12/base64.h → 18/base64-inl.h} +78 -86
- package/src/headers/18/base64.h +69 -0
- package/src/headers/{12 → 18}/base_object-inl.h +46 -25
- package/src/headers/{12 → 18}/base_object.h +82 -17
- package/src/headers/{12 → 18}/callback_queue-inl.h +9 -9
- package/src/headers/{12 → 18}/callback_queue.h +13 -5
- package/src/headers/18/cares_wrap.h +523 -0
- package/src/headers/{12 → 18}/connect_wrap.h +0 -0
- package/src/headers/{12 → 18}/connection_wrap.h +0 -0
- package/src/headers/18/crypto/crypto_aes.h +89 -0
- package/src/headers/{13/node_crypto_bio.h → 18/crypto/crypto_bio.h} +3 -4
- package/src/headers/18/crypto/crypto_cipher.h +291 -0
- package/src/headers/{13/node_crypto_clienthello-inl.h → 18/crypto/crypto_clienthello-inl.h} +4 -5
- package/src/headers/{13/node_crypto_clienthello.h → 18/crypto/crypto_clienthello.h} +3 -4
- package/src/headers/{12/node_crypto_common.h → 18/crypto/crypto_common.h} +49 -36
- package/src/headers/18/crypto/crypto_context.h +147 -0
- package/src/headers/18/crypto/crypto_dh.h +156 -0
- package/src/headers/18/crypto/crypto_dsa.h +77 -0
- package/src/headers/18/crypto/crypto_ec.h +170 -0
- package/src/headers/{12/node_crypto_groups.h → 18/crypto/crypto_groups.h} +3 -3
- package/src/headers/18/crypto/crypto_hash.h +89 -0
- package/src/headers/18/crypto/crypto_hkdf.h +65 -0
- package/src/headers/18/crypto/crypto_hmac.h +94 -0
- package/src/headers/18/crypto/crypto_keygen.h +305 -0
- package/src/headers/18/crypto/crypto_keys.h +420 -0
- package/src/headers/18/crypto/crypto_pbkdf2.h +76 -0
- package/src/headers/18/crypto/crypto_random.h +130 -0
- package/src/headers/18/crypto/crypto_rsa.h +141 -0
- package/src/headers/18/crypto/crypto_scrypt.h +87 -0
- package/src/headers/18/crypto/crypto_sig.h +168 -0
- package/src/headers/18/crypto/crypto_spkac.h +21 -0
- package/src/headers/18/crypto/crypto_timing.h +20 -0
- package/src/headers/{13/tls_wrap.h → 18/crypto/crypto_tls.h} +137 -66
- package/src/headers/18/crypto/crypto_util.h +791 -0
- package/src/headers/18/crypto/crypto_x509.h +143 -0
- package/src/headers/{12 → 18}/debug_utils-inl.h +0 -0
- package/src/headers/{13 → 18}/debug_utils.h +7 -4
- package/src/headers/{12 → 18}/diagnosticfilename-inl.h +0 -0
- package/src/headers/{12 → 18}/env-inl.h +397 -304
- package/src/headers/{12 → 18}/env.h +397 -172
- package/src/headers/{12 → 18}/handle_wrap.h +7 -3
- package/src/headers/18/histogram-inl.h +107 -0
- package/src/headers/18/histogram.h +239 -0
- package/src/headers/{13 → 18}/inspector_agent.h +4 -7
- package/src/headers/{12 → 18}/inspector_io.h +0 -0
- package/src/headers/{13 → 18}/inspector_profiler.h +17 -5
- package/src/headers/{12 → 18}/inspector_socket.h +0 -0
- package/src/headers/{12 → 18}/inspector_socket_server.h +0 -0
- package/src/headers/18/js_native_api.h +571 -0
- package/src/headers/{13 → 18}/js_native_api_types.h +30 -7
- package/src/headers/{12 → 18}/js_native_api_v8.h +220 -83
- package/src/headers/{12 → 18}/js_native_api_v8_internals.h +6 -5
- package/src/headers/{12 → 18}/js_stream.h +0 -0
- package/src/headers/{12 → 18}/json_utils.h +0 -0
- package/src/headers/{13 → 18}/memory_tracker-inl.h +6 -5
- package/src/headers/{13 → 18}/memory_tracker.h +0 -7
- package/src/headers/{13 → 18}/module_wrap.h +24 -7
- package/src/headers/{13 → 18}/node.h +329 -68
- package/src/headers/18/node_api.h +288 -0
- package/src/headers/18/node_api_internals.h +38 -0
- package/src/headers/{12 → 18}/node_api_types.h +12 -9
- package/src/headers/{12 → 18}/node_binding.h +0 -0
- package/src/headers/18/node_blob.h +191 -0
- package/src/headers/18/node_bob-inl.h +37 -0
- package/src/headers/18/node_bob.h +111 -0
- package/src/headers/{13 → 18}/node_buffer.h +0 -0
- package/src/headers/{13 → 18}/node_constants.h +5 -1
- package/src/headers/{12 → 18}/node_context_data.h +5 -0
- package/src/headers/{12 → 18}/node_contextify.h +37 -2
- package/src/headers/{10/node_win32_perfctr_provider.h → 18/node_crypto.h} +30 -31
- package/src/headers/{12 → 18}/node_dir.h +0 -0
- package/src/headers/{12 → 18}/node_dtrace.h +0 -0
- package/src/headers/{12 → 18}/node_errors.h +90 -24
- package/src/headers/18/node_external_reference.h +145 -0
- package/src/headers/{13 → 18}/node_file-inl.h +38 -21
- package/src/headers/{12 → 18}/node_file.h +74 -13
- package/src/headers/{13 → 18}/node_http2.h +365 -269
- package/src/headers/{12 → 18}/node_http2_state.h +40 -50
- package/src/headers/{13 → 18}/node_http_common-inl.h +25 -5
- package/src/headers/{13 → 18}/node_http_common.h +24 -20
- package/src/headers/{13 → 18}/node_i18n.h +2 -1
- package/src/headers/{12 → 18}/node_internals.h +39 -41
- package/src/headers/{13 → 18}/node_main_instance.h +15 -18
- package/src/headers/{12 → 18}/node_mem-inl.h +0 -0
- package/src/headers/{12 → 18}/node_mem.h +1 -1
- package/src/headers/{13 → 18}/node_messaging.h +170 -23
- package/src/headers/{12 → 18}/node_metadata.h +17 -4
- package/src/headers/{12 → 18}/node_mutex.h +77 -1
- package/src/headers/{12 → 18}/node_native_module.h +11 -1
- package/src/headers/{13 → 18}/node_native_module_env.h +14 -8
- package/src/headers/{12 → 18}/node_object_wrap.h +0 -0
- package/src/headers/{13 → 18}/node_options-inl.h +51 -21
- package/src/headers/{13 → 18}/node_options.h +46 -14
- package/src/headers/18/node_perf.h +168 -0
- package/src/headers/{12 → 18}/node_perf_common.h +16 -22
- package/src/headers/{12 → 18}/node_platform.h +21 -16
- package/src/headers/18/node_process-inl.h +26 -0
- package/src/headers/18/node_process.h +97 -0
- package/src/headers/{13 → 18}/node_report.h +2 -2
- package/src/headers/{13 → 18}/node_revert.h +10 -0
- package/src/headers/{12 → 18}/node_root_certs.h +439 -651
- package/src/headers/18/node_snapshot_builder.h +43 -0
- package/src/headers/18/node_snapshotable.h +130 -0
- package/src/headers/{12 → 18}/node_sockaddr-inl.h +100 -4
- package/src/headers/18/node_sockaddr.h +405 -0
- package/src/headers/{12 → 18}/node_stat_watcher.h +7 -1
- package/src/headers/{12 → 18}/node_union_bytes.h +0 -0
- package/src/headers/{13 → 18}/node_url.h +18 -1
- package/src/headers/18/node_v8.h +41 -0
- package/src/headers/{12 → 18}/node_v8_platform-inl.h +10 -0
- package/src/headers/{13 → 18}/node_version.h +7 -7
- package/src/headers/{12 → 18}/node_wasi.h +0 -0
- package/src/headers/18/node_wasm_web_api.h +55 -0
- package/src/headers/{13 → 18}/node_watchdog.h +0 -0
- package/src/headers/{10 → 18}/node_win32_etw_provider-inl.h +7 -6
- package/src/headers/{10 → 18}/node_win32_etw_provider.h +0 -0
- package/src/headers/{13 → 18}/node_worker.h +24 -17
- package/src/headers/{12 → 18}/pipe_wrap.h +2 -0
- package/src/headers/{12 → 18}/req_wrap-inl.h +0 -0
- package/src/headers/{12 → 18}/req_wrap.h +1 -1
- package/src/headers/{12 → 18}/spawn_sync.h +0 -0
- package/src/headers/{13 → 18}/stream_base-inl.h +58 -22
- package/src/headers/{13 → 18}/stream_base.h +29 -3
- package/src/headers/{13 → 18}/stream_pipe.h +8 -3
- package/src/headers/{12 → 18}/stream_wrap.h +4 -1
- package/src/headers/{13 → 18}/string_bytes.h +0 -7
- package/src/headers/{12 → 18}/string_decoder-inl.h +0 -0
- package/src/headers/{10 → 18}/string_decoder.h +0 -0
- package/src/headers/{13 → 18}/string_search.h +2 -2
- package/src/headers/{12 → 18}/tcp_wrap.h +4 -0
- package/src/headers/{12 → 18}/threadpoolwork-inl.h +0 -0
- package/src/headers/18/timer_wrap-inl.h +32 -0
- package/src/headers/18/timer_wrap.h +85 -0
- package/src/headers/{13 → 18}/tracing/agent.h +1 -1
- package/src/headers/{12 → 18}/tracing/node_trace_buffer.h +0 -0
- package/src/headers/{12 → 18}/tracing/node_trace_writer.h +0 -0
- package/src/headers/{13 → 18}/tracing/trace_event.h +23 -13
- package/src/headers/{12 → 18}/tracing/trace_event_common.h +0 -0
- package/src/headers/{12 → 18}/tracing/traced_value.h +0 -0
- package/src/headers/{13 → 18}/tty_wrap.h +2 -1
- package/src/headers/{13 → 18}/udp_wrap.h +5 -0
- package/src/headers/{13 → 18}/util-inl.h +69 -15
- package/src/headers/{13 → 18}/util.h +93 -31
- package/src/headers/18/v8-fast-api-calls.h +939 -0
- package/src/headers/{12 → 18}/v8abbr.h +2 -2
- package/src/headers/10/aliased_buffer.h +0 -241
- package/src/headers/10/async_wrap-inl.h +0 -106
- package/src/headers/10/async_wrap.h +0 -218
- package/src/headers/10/base64.h +0 -197
- package/src/headers/10/base_object-inl.h +0 -132
- package/src/headers/10/base_object.h +0 -115
- package/src/headers/10/connect_wrap.h +0 -28
- package/src/headers/10/connection_wrap.h +0 -30
- package/src/headers/10/debug_utils.h +0 -128
- package/src/headers/10/env-inl.h +0 -906
- package/src/headers/10/env.h +0 -1046
- package/src/headers/10/handle_wrap.h +0 -114
- package/src/headers/10/inspector_agent.h +0 -137
- package/src/headers/10/inspector_io.h +0 -97
- package/src/headers/10/inspector_socket.h +0 -59
- package/src/headers/10/inspector_socket_server.h +0 -104
- package/src/headers/10/js_stream.h +0 -57
- package/src/headers/10/memory_tracker-inl.h +0 -318
- package/src/headers/10/memory_tracker.h +0 -246
- package/src/headers/10/module_wrap.h +0 -100
- package/src/headers/10/node.h +0 -863
- package/src/headers/10/node_api.h +0 -752
- package/src/headers/10/node_api_types.h +0 -171
- package/src/headers/10/node_buffer.h +0 -90
- package/src/headers/10/node_code_cache.h +0 -17
- package/src/headers/10/node_constants.h +0 -74
- package/src/headers/10/node_context_data.h +0 -39
- package/src/headers/10/node_contextify.h +0 -141
- package/src/headers/10/node_counters.h +0 -59
- package/src/headers/10/node_crypto.h +0 -699
- package/src/headers/10/node_crypto_bio.h +0 -177
- package/src/headers/10/node_crypto_clienthello-inl.h +0 -92
- package/src/headers/10/node_crypto_clienthello.h +0 -131
- package/src/headers/10/node_crypto_groups.h +0 -416
- package/src/headers/10/node_dtrace.h +0 -84
- package/src/headers/10/node_errors.h +0 -118
- package/src/headers/10/node_file.h +0 -373
- package/src/headers/10/node_http2.h +0 -1304
- package/src/headers/10/node_http2_state.h +0 -158
- package/src/headers/10/node_i18n.h +0 -69
- package/src/headers/10/node_internals.h +0 -952
- package/src/headers/10/node_javascript.h +0 -41
- package/src/headers/10/node_messaging.h +0 -219
- package/src/headers/10/node_mutex.h +0 -191
- package/src/headers/10/node_object_wrap.h +0 -130
- package/src/headers/10/node_options-inl.h +0 -444
- package/src/headers/10/node_options.h +0 -397
- package/src/headers/10/node_perf.h +0 -134
- package/src/headers/10/node_perf_common.h +0 -96
- package/src/headers/10/node_persistent.h +0 -30
- package/src/headers/10/node_platform.h +0 -170
- package/src/headers/10/node_revert.h +0 -75
- package/src/headers/10/node_root_certs.h +0 -3393
- package/src/headers/10/node_stat_watcher.h +0 -65
- package/src/headers/10/node_url.h +0 -193
- package/src/headers/10/node_version.h +0 -120
- package/src/headers/10/node_watchdog.h +0 -114
- package/src/headers/10/node_worker.h +0 -94
- package/src/headers/10/pipe_wrap.h +0 -76
- package/src/headers/10/req_wrap-inl.h +0 -166
- package/src/headers/10/req_wrap.h +0 -61
- package/src/headers/10/sharedarraybuffer_metadata.h +0 -67
- package/src/headers/10/spawn_sync.h +0 -240
- package/src/headers/10/stream_base-inl.h +0 -458
- package/src/headers/10/stream_base.h +0 -378
- package/src/headers/10/stream_pipe.h +0 -72
- package/src/headers/10/stream_wrap.h +0 -130
- package/src/headers/10/string_bytes.h +0 -126
- package/src/headers/10/string_decoder-inl.h +0 -38
- package/src/headers/10/string_search.h +0 -620
- package/src/headers/10/tcp_wrap.h +0 -99
- package/src/headers/10/tls_wrap.h +0 -195
- package/src/headers/10/tracing/agent.h +0 -178
- package/src/headers/10/tracing/node_trace_buffer.h +0 -83
- package/src/headers/10/tracing/node_trace_writer.h +0 -75
- package/src/headers/10/tracing/trace_event.h +0 -706
- package/src/headers/10/tracing/trace_event_common.h +0 -1102
- package/src/headers/10/tracing/traced_value.h +0 -68
- package/src/headers/10/tty_wrap.h +0 -63
- package/src/headers/10/udp_wrap.h +0 -102
- package/src/headers/10/util-inl.h +0 -459
- package/src/headers/10/util.h +0 -508
- package/src/headers/10/v8abbr.h +0 -121
- package/src/headers/12/aliased_buffer.h +0 -263
- package/src/headers/12/debug_utils.h +0 -181
- package/src/headers/12/histogram-inl.h +0 -83
- package/src/headers/12/histogram.h +0 -98
- package/src/headers/12/http_parser_adaptor.h +0 -24
- package/src/headers/12/inspector_agent.h +0 -147
- package/src/headers/12/inspector_profiler.h +0 -137
- package/src/headers/12/js_native_api.h +0 -541
- package/src/headers/12/js_native_api_types.h +0 -139
- package/src/headers/12/memory_tracker-inl.h +0 -339
- package/src/headers/12/memory_tracker.h +0 -283
- package/src/headers/12/module_wrap.h +0 -99
- package/src/headers/12/node.h +0 -887
- package/src/headers/12/node_api.h +0 -239
- package/src/headers/12/node_buffer.h +0 -92
- package/src/headers/12/node_constants.h +0 -80
- package/src/headers/12/node_crypto.h +0 -800
- package/src/headers/12/node_crypto_bio.h +0 -195
- package/src/headers/12/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/12/node_crypto_clienthello.h +0 -132
- package/src/headers/12/node_file-inl.h +0 -289
- package/src/headers/12/node_http2.h +0 -1311
- package/src/headers/12/node_http_parser_impl.h +0 -994
- package/src/headers/12/node_i18n.h +0 -144
- package/src/headers/12/node_main_instance.h +0 -97
- package/src/headers/12/node_messaging.h +0 -227
- package/src/headers/12/node_native_module_env.h +0 -65
- package/src/headers/12/node_options-inl.h +0 -447
- package/src/headers/12/node_options.h +0 -479
- package/src/headers/12/node_perf.h +0 -181
- package/src/headers/12/node_process.h +0 -41
- package/src/headers/12/node_report.h +0 -47
- package/src/headers/12/node_revert.h +0 -78
- package/src/headers/12/node_sockaddr.h +0 -123
- package/src/headers/12/node_url.h +0 -188
- package/src/headers/12/node_version.h +0 -98
- package/src/headers/12/node_watchdog.h +0 -152
- package/src/headers/12/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/12/node_win32_etw_provider.h +0 -99
- package/src/headers/12/node_worker.h +0 -142
- package/src/headers/12/sharedarraybuffer_metadata.h +0 -72
- package/src/headers/12/stream_base-inl.h +0 -323
- package/src/headers/12/stream_base.h +0 -431
- package/src/headers/12/stream_pipe.h +0 -72
- package/src/headers/12/string_bytes.h +0 -142
- package/src/headers/12/string_decoder.h +0 -50
- package/src/headers/12/string_search.h +0 -638
- package/src/headers/12/tls_wrap.h +0 -221
- package/src/headers/12/tracing/agent.h +0 -195
- package/src/headers/12/tracing/trace_event.h +0 -710
- package/src/headers/12/tty_wrap.h +0 -64
- package/src/headers/12/udp_wrap.h +0 -222
- package/src/headers/12/util-inl.h +0 -529
- package/src/headers/12/util.h +0 -765
- package/src/headers/13/async_wrap-inl.h +0 -94
- package/src/headers/13/async_wrap.h +0 -224
- package/src/headers/13/base64.h +0 -197
- package/src/headers/13/base_object-inl.h +0 -353
- package/src/headers/13/base_object.h +0 -229
- package/src/headers/13/connect_wrap.h +0 -26
- package/src/headers/13/connection_wrap.h +0 -30
- package/src/headers/13/debug_utils-inl.h +0 -223
- package/src/headers/13/diagnosticfilename-inl.h +0 -33
- package/src/headers/13/env-inl.h +0 -1293
- package/src/headers/13/env.h +0 -1469
- package/src/headers/13/handle_wrap.h +0 -117
- package/src/headers/13/histogram-inl.h +0 -83
- package/src/headers/13/histogram.h +0 -98
- package/src/headers/13/inspector_io.h +0 -78
- package/src/headers/13/inspector_socket.h +0 -60
- package/src/headers/13/inspector_socket_server.h +0 -110
- package/src/headers/13/js_native_api.h +0 -541
- package/src/headers/13/js_native_api_v8.h +0 -303
- package/src/headers/13/js_native_api_v8_internals.h +0 -38
- package/src/headers/13/js_stream.h +0 -52
- package/src/headers/13/json_utils.h +0 -160
- package/src/headers/13/node_api.h +0 -239
- package/src/headers/13/node_api_types.h +0 -44
- package/src/headers/13/node_binding.h +0 -99
- package/src/headers/13/node_context_data.h +0 -39
- package/src/headers/13/node_contextify.h +0 -161
- package/src/headers/13/node_crypto.h +0 -800
- package/src/headers/13/node_crypto_common.h +0 -138
- package/src/headers/13/node_crypto_groups.h +0 -415
- package/src/headers/13/node_dir.h +0 -52
- package/src/headers/13/node_dtrace.h +0 -86
- package/src/headers/13/node_errors.h +0 -210
- package/src/headers/13/node_file.h +0 -364
- package/src/headers/13/node_http2_state.h +0 -144
- package/src/headers/13/node_internals.h +0 -405
- package/src/headers/13/node_mem-inl.h +0 -112
- package/src/headers/13/node_mem.h +0 -41
- package/src/headers/13/node_metadata.h +0 -109
- package/src/headers/13/node_mutex.h +0 -247
- package/src/headers/13/node_native_module.h +0 -99
- package/src/headers/13/node_object_wrap.h +0 -132
- package/src/headers/13/node_perf.h +0 -181
- package/src/headers/13/node_perf_common.h +0 -97
- package/src/headers/13/node_platform.h +0 -190
- package/src/headers/13/node_process.h +0 -41
- package/src/headers/13/node_root_certs.h +0 -3424
- package/src/headers/13/node_sockaddr-inl.h +0 -170
- package/src/headers/13/node_sockaddr.h +0 -123
- package/src/headers/13/node_stat_watcher.h +0 -66
- package/src/headers/13/node_union_bytes.h +0 -103
- package/src/headers/13/node_v8_platform-inl.h +0 -184
- package/src/headers/13/node_wasi.h +0 -108
- package/src/headers/13/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/13/node_win32_etw_provider.h +0 -99
- package/src/headers/13/pipe_wrap.h +0 -78
- package/src/headers/13/req_wrap-inl.h +0 -170
- package/src/headers/13/req_wrap.h +0 -77
- package/src/headers/13/spawn_sync.h +0 -242
- package/src/headers/13/stream_wrap.h +0 -130
- package/src/headers/13/string_decoder-inl.h +0 -37
- package/src/headers/13/string_decoder.h +0 -50
- package/src/headers/13/tcp_wrap.h +0 -101
- package/src/headers/13/threadpoolwork-inl.h +0 -57
- package/src/headers/13/tracing/node_trace_buffer.h +0 -83
- package/src/headers/13/tracing/node_trace_writer.h +0 -75
- package/src/headers/13/tracing/trace_event_common.h +0 -1109
- package/src/headers/13/tracing/traced_value.h +0 -70
- package/src/headers/13/v8abbr.h +0 -124
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
#ifndef SRC_NODE_SOCKADDR_INL_H_
|
|
2
|
-
#define SRC_NODE_SOCKADDR_INL_H_
|
|
3
|
-
|
|
4
|
-
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
-
|
|
6
|
-
#include "node.h"
|
|
7
|
-
#include "node_internals.h"
|
|
8
|
-
#include "node_sockaddr.h"
|
|
9
|
-
#include "util-inl.h"
|
|
10
|
-
|
|
11
|
-
#include <string>
|
|
12
|
-
|
|
13
|
-
namespace node {
|
|
14
|
-
|
|
15
|
-
static constexpr uint32_t kLabelMask = 0xFFFFF;
|
|
16
|
-
|
|
17
|
-
inline void hash_combine(size_t* seed) { }
|
|
18
|
-
|
|
19
|
-
template <typename T, typename... Args>
|
|
20
|
-
inline void hash_combine(size_t* seed, const T& value, Args... rest) {
|
|
21
|
-
*seed ^= std::hash<T>{}(value) + 0x9e3779b9 + (*seed << 6) + (*seed >> 2);
|
|
22
|
-
hash_combine(seed, rest...);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
bool SocketAddress::is_numeric_host(const char* hostname) {
|
|
26
|
-
return is_numeric_host(hostname, AF_INET) ||
|
|
27
|
-
is_numeric_host(hostname, AF_INET6);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
bool SocketAddress::is_numeric_host(const char* hostname, int family) {
|
|
31
|
-
in6_addr dst;
|
|
32
|
-
return inet_pton(family, hostname, &dst) == 1;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
int SocketAddress::GetPort(const sockaddr* addr) {
|
|
36
|
-
CHECK(addr->sa_family == AF_INET || addr->sa_family == AF_INET6);
|
|
37
|
-
return ntohs(addr->sa_family == AF_INET ?
|
|
38
|
-
reinterpret_cast<const sockaddr_in*>(addr)->sin_port :
|
|
39
|
-
reinterpret_cast<const sockaddr_in6*>(addr)->sin6_port);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
int SocketAddress::GetPort(const sockaddr_storage* addr) {
|
|
43
|
-
return GetPort(reinterpret_cast<const sockaddr*>(addr));
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
std::string SocketAddress::GetAddress(const sockaddr* addr) {
|
|
47
|
-
CHECK(addr->sa_family == AF_INET || addr->sa_family == AF_INET6);
|
|
48
|
-
char host[INET6_ADDRSTRLEN];
|
|
49
|
-
const void* src = addr->sa_family == AF_INET ?
|
|
50
|
-
static_cast<const void*>(
|
|
51
|
-
&(reinterpret_cast<const sockaddr_in*>(addr)->sin_addr)) :
|
|
52
|
-
static_cast<const void*>(
|
|
53
|
-
&(reinterpret_cast<const sockaddr_in6*>(addr)->sin6_addr));
|
|
54
|
-
uv_inet_ntop(addr->sa_family, src, host, INET6_ADDRSTRLEN);
|
|
55
|
-
return std::string(host);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
std::string SocketAddress::GetAddress(const sockaddr_storage* addr) {
|
|
59
|
-
return GetAddress(reinterpret_cast<const sockaddr*>(addr));
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
size_t SocketAddress::GetLength(const sockaddr* addr) {
|
|
63
|
-
return addr->sa_family == AF_INET ?
|
|
64
|
-
sizeof(sockaddr_in) : sizeof(sockaddr_in6);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
size_t SocketAddress::GetLength(const sockaddr_storage* addr) {
|
|
68
|
-
return GetLength(reinterpret_cast<const sockaddr*>(addr));
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
SocketAddress::SocketAddress(const sockaddr* addr) {
|
|
72
|
-
memcpy(&address_, addr, GetLength(addr));
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
SocketAddress::SocketAddress(const SocketAddress& addr) {
|
|
76
|
-
memcpy(&address_, &addr.address_, addr.length());
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
SocketAddress& SocketAddress::operator=(const sockaddr* addr) {
|
|
80
|
-
memcpy(&address_, addr, GetLength(addr));
|
|
81
|
-
return *this;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
SocketAddress& SocketAddress::operator=(const SocketAddress& addr) {
|
|
85
|
-
memcpy(&address_, &addr.address_, addr.length());
|
|
86
|
-
return *this;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
const sockaddr& SocketAddress::operator*() const {
|
|
90
|
-
return *this->data();
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const sockaddr* SocketAddress::operator->() const {
|
|
94
|
-
return this->data();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
size_t SocketAddress::length() const {
|
|
98
|
-
return GetLength(&address_);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const sockaddr* SocketAddress::data() const {
|
|
102
|
-
return reinterpret_cast<const sockaddr*>(&address_);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const uint8_t* SocketAddress::raw() const {
|
|
106
|
-
return reinterpret_cast<const uint8_t*>(&address_);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
sockaddr* SocketAddress::storage() {
|
|
110
|
-
return reinterpret_cast<sockaddr*>(&address_);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
int SocketAddress::family() const {
|
|
114
|
-
return address_.ss_family;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
std::string SocketAddress::address() const {
|
|
118
|
-
return GetAddress(&address_);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
int SocketAddress::port() const {
|
|
122
|
-
return GetPort(&address_);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
uint32_t SocketAddress::flow_label() const {
|
|
126
|
-
if (family() != AF_INET6)
|
|
127
|
-
return 0;
|
|
128
|
-
const sockaddr_in6* in = reinterpret_cast<const sockaddr_in6*>(data());
|
|
129
|
-
return in->sin6_flowinfo;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
void SocketAddress::set_flow_label(uint32_t label) {
|
|
133
|
-
if (family() != AF_INET6)
|
|
134
|
-
return;
|
|
135
|
-
CHECK_LE(label, kLabelMask);
|
|
136
|
-
sockaddr_in6* in = reinterpret_cast<sockaddr_in6*>(&address_);
|
|
137
|
-
in->sin6_flowinfo = label;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
std::string SocketAddress::ToString() const {
|
|
141
|
-
if (family() != AF_INET && family() != AF_INET6) return "";
|
|
142
|
-
return (family() == AF_INET6 ?
|
|
143
|
-
std::string("[") + address() + "]:" :
|
|
144
|
-
address() + ":") +
|
|
145
|
-
std::to_string(port());
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
void SocketAddress::Update(uint8_t* data, size_t len) {
|
|
149
|
-
CHECK_LE(len, sizeof(address_));
|
|
150
|
-
memcpy(&address_, data, len);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
v8::Local<v8::Object> SocketAddress::ToJS(
|
|
154
|
-
Environment* env,
|
|
155
|
-
v8::Local<v8::Object> info) const {
|
|
156
|
-
return AddressToJS(env, data(), info);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
bool SocketAddress::operator==(const SocketAddress& other) const {
|
|
160
|
-
if (family() != other.family()) return false;
|
|
161
|
-
return memcmp(raw(), other.raw(), length()) == 0;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
bool SocketAddress::operator!=(const SocketAddress& other) const {
|
|
165
|
-
return !(*this == other);
|
|
166
|
-
}
|
|
167
|
-
} // namespace node
|
|
168
|
-
|
|
169
|
-
#endif // NODE_WANT_INTERNALS
|
|
170
|
-
#endif // SRC_NODE_SOCKADDR_INL_H_
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
#ifndef SRC_NODE_SOCKADDR_H_
|
|
2
|
-
#define SRC_NODE_SOCKADDR_H_
|
|
3
|
-
|
|
4
|
-
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
-
|
|
6
|
-
#include "memory_tracker.h"
|
|
7
|
-
#include "node.h"
|
|
8
|
-
#include "uv.h"
|
|
9
|
-
#include "v8.h"
|
|
10
|
-
|
|
11
|
-
#include <string>
|
|
12
|
-
#include <unordered_map>
|
|
13
|
-
|
|
14
|
-
namespace node {
|
|
15
|
-
|
|
16
|
-
class Environment;
|
|
17
|
-
|
|
18
|
-
class SocketAddress : public MemoryRetainer {
|
|
19
|
-
public:
|
|
20
|
-
struct Hash {
|
|
21
|
-
size_t operator()(const SocketAddress& addr) const;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
inline bool operator==(const SocketAddress& other) const;
|
|
25
|
-
inline bool operator!=(const SocketAddress& other) const;
|
|
26
|
-
|
|
27
|
-
inline static bool is_numeric_host(const char* hostname);
|
|
28
|
-
inline static bool is_numeric_host(const char* hostname, int family);
|
|
29
|
-
|
|
30
|
-
// Returns true if converting {family, host, port} to *addr succeeded.
|
|
31
|
-
static bool ToSockAddr(
|
|
32
|
-
int32_t family,
|
|
33
|
-
const char* host,
|
|
34
|
-
uint32_t port,
|
|
35
|
-
sockaddr_storage* addr);
|
|
36
|
-
|
|
37
|
-
// Returns true if converting {family, host, port} to *addr succeeded.
|
|
38
|
-
static bool New(
|
|
39
|
-
int32_t family,
|
|
40
|
-
const char* host,
|
|
41
|
-
uint32_t port,
|
|
42
|
-
SocketAddress* addr);
|
|
43
|
-
|
|
44
|
-
static bool New(
|
|
45
|
-
const char* host,
|
|
46
|
-
uint32_t port,
|
|
47
|
-
SocketAddress* addr);
|
|
48
|
-
|
|
49
|
-
// Returns the port for an IPv4 or IPv6 address.
|
|
50
|
-
inline static int GetPort(const sockaddr* addr);
|
|
51
|
-
inline static int GetPort(const sockaddr_storage* addr);
|
|
52
|
-
|
|
53
|
-
// Returns the numeric host as a string for an IPv4 or IPv6 address.
|
|
54
|
-
inline static std::string GetAddress(const sockaddr* addr);
|
|
55
|
-
inline static std::string GetAddress(const sockaddr_storage* addr);
|
|
56
|
-
|
|
57
|
-
// Returns the struct length for an IPv4, IPv6 or UNIX domain.
|
|
58
|
-
inline static size_t GetLength(const sockaddr* addr);
|
|
59
|
-
inline static size_t GetLength(const sockaddr_storage* addr);
|
|
60
|
-
|
|
61
|
-
SocketAddress() = default;
|
|
62
|
-
|
|
63
|
-
inline explicit SocketAddress(const sockaddr* addr);
|
|
64
|
-
inline SocketAddress(const SocketAddress& addr);
|
|
65
|
-
inline SocketAddress& operator=(const sockaddr* other);
|
|
66
|
-
inline SocketAddress& operator=(const SocketAddress& other);
|
|
67
|
-
|
|
68
|
-
inline const sockaddr& operator*() const;
|
|
69
|
-
inline const sockaddr* operator->() const;
|
|
70
|
-
|
|
71
|
-
inline const sockaddr* data() const;
|
|
72
|
-
inline const uint8_t* raw() const;
|
|
73
|
-
inline sockaddr* storage();
|
|
74
|
-
inline size_t length() const;
|
|
75
|
-
|
|
76
|
-
inline int family() const;
|
|
77
|
-
inline std::string address() const;
|
|
78
|
-
inline int port() const;
|
|
79
|
-
|
|
80
|
-
// If the SocketAddress is an IPv6 address, returns the
|
|
81
|
-
// current value of the IPv6 flow label, if set. Otherwise
|
|
82
|
-
// returns 0.
|
|
83
|
-
inline uint32_t flow_label() const;
|
|
84
|
-
|
|
85
|
-
// If the SocketAddress is an IPv6 address, sets the
|
|
86
|
-
// current value of the IPv6 flow label. If not an
|
|
87
|
-
// IPv6 address, set_flow_label is a non-op. It
|
|
88
|
-
// is important to note that the flow label,
|
|
89
|
-
// while represented as an uint32_t, the flow
|
|
90
|
-
// label is strictly limited to 20 bits, and
|
|
91
|
-
// this will assert if any value larger than
|
|
92
|
-
// 20-bits is specified.
|
|
93
|
-
inline void set_flow_label(uint32_t label = 0);
|
|
94
|
-
|
|
95
|
-
inline void Update(uint8_t* data, size_t len);
|
|
96
|
-
|
|
97
|
-
static SocketAddress FromSockName(const uv_udp_t& handle);
|
|
98
|
-
static SocketAddress FromSockName(const uv_tcp_t& handle);
|
|
99
|
-
static SocketAddress FromPeerName(const uv_udp_t& handle);
|
|
100
|
-
static SocketAddress FromPeerName(const uv_tcp_t& handle);
|
|
101
|
-
|
|
102
|
-
inline v8::Local<v8::Object> ToJS(
|
|
103
|
-
Environment* env,
|
|
104
|
-
v8::Local<v8::Object> obj = v8::Local<v8::Object>()) const;
|
|
105
|
-
|
|
106
|
-
inline std::string ToString() const;
|
|
107
|
-
|
|
108
|
-
SET_NO_MEMORY_INFO()
|
|
109
|
-
SET_MEMORY_INFO_NAME(SocketAddress)
|
|
110
|
-
SET_SELF_SIZE(SocketAddress)
|
|
111
|
-
|
|
112
|
-
template <typename T>
|
|
113
|
-
using Map = std::unordered_map<SocketAddress, T, Hash>;
|
|
114
|
-
|
|
115
|
-
private:
|
|
116
|
-
sockaddr_storage address_;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
} // namespace node
|
|
120
|
-
|
|
121
|
-
#endif // NOE_WANT_INTERNALS
|
|
122
|
-
|
|
123
|
-
#endif // SRC_NODE_SOCKADDR_H_
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
// Copyright Joyent, Inc. and other Node contributors.
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
4
|
-
// copy of this software and associated documentation files (the
|
|
5
|
-
// "Software"), to deal in the Software without restriction, including
|
|
6
|
-
// without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
-
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
8
|
-
// persons to whom the Software is furnished to do so, subject to the
|
|
9
|
-
// following conditions:
|
|
10
|
-
//
|
|
11
|
-
// The above copyright notice and this permission notice shall be included
|
|
12
|
-
// in all copies or substantial portions of the Software.
|
|
13
|
-
//
|
|
14
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
15
|
-
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
-
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
17
|
-
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
18
|
-
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
19
|
-
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|
20
|
-
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
|
-
|
|
22
|
-
#ifndef SRC_NODE_STAT_WATCHER_H_
|
|
23
|
-
#define SRC_NODE_STAT_WATCHER_H_
|
|
24
|
-
|
|
25
|
-
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
26
|
-
|
|
27
|
-
#include "node.h"
|
|
28
|
-
#include "handle_wrap.h"
|
|
29
|
-
#include "uv.h"
|
|
30
|
-
#include "v8.h"
|
|
31
|
-
|
|
32
|
-
namespace node {
|
|
33
|
-
|
|
34
|
-
class Environment;
|
|
35
|
-
|
|
36
|
-
class StatWatcher : public HandleWrap {
|
|
37
|
-
public:
|
|
38
|
-
static void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
39
|
-
|
|
40
|
-
protected:
|
|
41
|
-
StatWatcher(Environment* env,
|
|
42
|
-
v8::Local<v8::Object> wrap,
|
|
43
|
-
bool use_bigint);
|
|
44
|
-
|
|
45
|
-
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
46
|
-
static void Start(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
47
|
-
|
|
48
|
-
SET_NO_MEMORY_INFO()
|
|
49
|
-
SET_MEMORY_INFO_NAME(StatWatcher)
|
|
50
|
-
SET_SELF_SIZE(StatWatcher)
|
|
51
|
-
|
|
52
|
-
private:
|
|
53
|
-
static void Callback(uv_fs_poll_t* handle,
|
|
54
|
-
int status,
|
|
55
|
-
const uv_stat_t* prev,
|
|
56
|
-
const uv_stat_t* curr);
|
|
57
|
-
|
|
58
|
-
uv_fs_poll_t watcher_;
|
|
59
|
-
const bool use_bigint_;
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
} // namespace node
|
|
63
|
-
|
|
64
|
-
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
65
|
-
|
|
66
|
-
#endif // SRC_NODE_STAT_WATCHER_H_
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
#ifndef SRC_NODE_UNION_BYTES_H_
|
|
3
|
-
#define SRC_NODE_UNION_BYTES_H_
|
|
4
|
-
|
|
5
|
-
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
6
|
-
|
|
7
|
-
// A union of const uint8_t* or const uint16_t* data that can be
|
|
8
|
-
// turned into external v8::String when given an isolate.
|
|
9
|
-
|
|
10
|
-
#include "v8.h"
|
|
11
|
-
|
|
12
|
-
namespace node {
|
|
13
|
-
|
|
14
|
-
class NonOwningExternalOneByteResource
|
|
15
|
-
: public v8::String::ExternalOneByteStringResource {
|
|
16
|
-
public:
|
|
17
|
-
explicit NonOwningExternalOneByteResource(const uint8_t* data, size_t length)
|
|
18
|
-
: data_(data), length_(length) {}
|
|
19
|
-
~NonOwningExternalOneByteResource() override = default;
|
|
20
|
-
|
|
21
|
-
const char* data() const override {
|
|
22
|
-
return reinterpret_cast<const char*>(data_);
|
|
23
|
-
}
|
|
24
|
-
size_t length() const override { return length_; }
|
|
25
|
-
|
|
26
|
-
NonOwningExternalOneByteResource(const NonOwningExternalOneByteResource&) =
|
|
27
|
-
delete;
|
|
28
|
-
NonOwningExternalOneByteResource& operator=(
|
|
29
|
-
const NonOwningExternalOneByteResource&) = delete;
|
|
30
|
-
|
|
31
|
-
private:
|
|
32
|
-
const uint8_t* data_;
|
|
33
|
-
size_t length_;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
class NonOwningExternalTwoByteResource
|
|
37
|
-
: public v8::String::ExternalStringResource {
|
|
38
|
-
public:
|
|
39
|
-
explicit NonOwningExternalTwoByteResource(const uint16_t* data, size_t length)
|
|
40
|
-
: data_(data), length_(length) {}
|
|
41
|
-
~NonOwningExternalTwoByteResource() override = default;
|
|
42
|
-
|
|
43
|
-
const uint16_t* data() const override { return data_; }
|
|
44
|
-
size_t length() const override { return length_; }
|
|
45
|
-
|
|
46
|
-
NonOwningExternalTwoByteResource(const NonOwningExternalTwoByteResource&) =
|
|
47
|
-
delete;
|
|
48
|
-
NonOwningExternalTwoByteResource& operator=(
|
|
49
|
-
const NonOwningExternalTwoByteResource&) = delete;
|
|
50
|
-
|
|
51
|
-
private:
|
|
52
|
-
const uint16_t* data_;
|
|
53
|
-
size_t length_;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// Similar to a v8::String, but it's independent from Isolates
|
|
57
|
-
// and can be materialized in Isolates as external Strings
|
|
58
|
-
// via ToStringChecked. The data pointers are owned by the caller.
|
|
59
|
-
class UnionBytes {
|
|
60
|
-
public:
|
|
61
|
-
UnionBytes(const uint16_t* data, size_t length)
|
|
62
|
-
: one_bytes_(nullptr), two_bytes_(data), length_(length) {}
|
|
63
|
-
UnionBytes(const uint8_t* data, size_t length)
|
|
64
|
-
: one_bytes_(data), two_bytes_(nullptr), length_(length) {}
|
|
65
|
-
|
|
66
|
-
UnionBytes(const UnionBytes&) = default;
|
|
67
|
-
UnionBytes& operator=(const UnionBytes&) = default;
|
|
68
|
-
UnionBytes(UnionBytes&&) = default;
|
|
69
|
-
UnionBytes& operator=(UnionBytes&&) = default;
|
|
70
|
-
|
|
71
|
-
bool is_one_byte() const { return one_bytes_ != nullptr; }
|
|
72
|
-
const uint16_t* two_bytes_data() const {
|
|
73
|
-
CHECK_NOT_NULL(two_bytes_);
|
|
74
|
-
return two_bytes_;
|
|
75
|
-
}
|
|
76
|
-
const uint8_t* one_bytes_data() const {
|
|
77
|
-
CHECK_NOT_NULL(one_bytes_);
|
|
78
|
-
return one_bytes_;
|
|
79
|
-
}
|
|
80
|
-
v8::Local<v8::String> ToStringChecked(v8::Isolate* isolate) const {
|
|
81
|
-
if (is_one_byte()) {
|
|
82
|
-
NonOwningExternalOneByteResource* source =
|
|
83
|
-
new NonOwningExternalOneByteResource(one_bytes_data(), length_);
|
|
84
|
-
return v8::String::NewExternalOneByte(isolate, source).ToLocalChecked();
|
|
85
|
-
} else {
|
|
86
|
-
NonOwningExternalTwoByteResource* source =
|
|
87
|
-
new NonOwningExternalTwoByteResource(two_bytes_data(), length_);
|
|
88
|
-
return v8::String::NewExternalTwoByte(isolate, source).ToLocalChecked();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
size_t length() { return length_; }
|
|
92
|
-
|
|
93
|
-
private:
|
|
94
|
-
const uint8_t* one_bytes_;
|
|
95
|
-
const uint16_t* two_bytes_;
|
|
96
|
-
size_t length_;
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
} // namespace node
|
|
100
|
-
|
|
101
|
-
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
102
|
-
|
|
103
|
-
#endif // SRC_NODE_UNION_BYTES_H_
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
#ifndef SRC_NODE_V8_PLATFORM_INL_H_
|
|
2
|
-
#define SRC_NODE_V8_PLATFORM_INL_H_
|
|
3
|
-
|
|
4
|
-
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
-
|
|
6
|
-
#include <memory>
|
|
7
|
-
|
|
8
|
-
#include "env-inl.h"
|
|
9
|
-
#include "node.h"
|
|
10
|
-
#include "node_metadata.h"
|
|
11
|
-
#include "node_options.h"
|
|
12
|
-
#include "tracing/node_trace_writer.h"
|
|
13
|
-
#include "tracing/trace_event.h"
|
|
14
|
-
#include "tracing/traced_value.h"
|
|
15
|
-
|
|
16
|
-
namespace node {
|
|
17
|
-
|
|
18
|
-
// Ensures that __metadata trace events are only emitted
|
|
19
|
-
// when tracing is enabled.
|
|
20
|
-
class NodeTraceStateObserver
|
|
21
|
-
: public v8::TracingController::TraceStateObserver {
|
|
22
|
-
public:
|
|
23
|
-
inline void OnTraceEnabled() override {
|
|
24
|
-
std::string title = GetProcessTitle("");
|
|
25
|
-
if (!title.empty()) {
|
|
26
|
-
// Only emit the metadata event if the title can be retrieved
|
|
27
|
-
// successfully. Ignore it otherwise.
|
|
28
|
-
TRACE_EVENT_METADATA1(
|
|
29
|
-
"__metadata", "process_name", "name", TRACE_STR_COPY(title.c_str()));
|
|
30
|
-
}
|
|
31
|
-
TRACE_EVENT_METADATA1("__metadata",
|
|
32
|
-
"version",
|
|
33
|
-
"node",
|
|
34
|
-
per_process::metadata.versions.node.c_str());
|
|
35
|
-
TRACE_EVENT_METADATA1(
|
|
36
|
-
"__metadata", "thread_name", "name", "JavaScriptMainThread");
|
|
37
|
-
|
|
38
|
-
auto trace_process = tracing::TracedValue::Create();
|
|
39
|
-
trace_process->BeginDictionary("versions");
|
|
40
|
-
|
|
41
|
-
#define V(key) \
|
|
42
|
-
trace_process->SetString(#key, per_process::metadata.versions.key.c_str());
|
|
43
|
-
|
|
44
|
-
NODE_VERSIONS_KEYS(V)
|
|
45
|
-
#undef V
|
|
46
|
-
|
|
47
|
-
trace_process->EndDictionary();
|
|
48
|
-
|
|
49
|
-
trace_process->SetString("arch", per_process::metadata.arch.c_str());
|
|
50
|
-
trace_process->SetString("platform",
|
|
51
|
-
per_process::metadata.platform.c_str());
|
|
52
|
-
|
|
53
|
-
trace_process->BeginDictionary("release");
|
|
54
|
-
trace_process->SetString("name",
|
|
55
|
-
per_process::metadata.release.name.c_str());
|
|
56
|
-
#if NODE_VERSION_IS_LTS
|
|
57
|
-
trace_process->SetString("lts", per_process::metadata.release.lts.c_str());
|
|
58
|
-
#endif
|
|
59
|
-
trace_process->EndDictionary();
|
|
60
|
-
TRACE_EVENT_METADATA1(
|
|
61
|
-
"__metadata", "node", "process", std::move(trace_process));
|
|
62
|
-
|
|
63
|
-
// This only runs the first time tracing is enabled
|
|
64
|
-
controller_->RemoveTraceStateObserver(this);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
inline void OnTraceDisabled() override {
|
|
68
|
-
// Do nothing here. This should never be called because the
|
|
69
|
-
// observer removes itself when OnTraceEnabled() is called.
|
|
70
|
-
UNREACHABLE();
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
explicit NodeTraceStateObserver(v8::TracingController* controller)
|
|
74
|
-
: controller_(controller) {}
|
|
75
|
-
~NodeTraceStateObserver() override = default;
|
|
76
|
-
|
|
77
|
-
private:
|
|
78
|
-
v8::TracingController* controller_;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
struct V8Platform {
|
|
82
|
-
#if NODE_USE_V8_PLATFORM
|
|
83
|
-
inline void Initialize(int thread_pool_size) {
|
|
84
|
-
tracing_agent_ = std::make_unique<tracing::Agent>();
|
|
85
|
-
node::tracing::TraceEventHelper::SetAgent(tracing_agent_.get());
|
|
86
|
-
node::tracing::TracingController* controller =
|
|
87
|
-
tracing_agent_->GetTracingController();
|
|
88
|
-
trace_state_observer_ =
|
|
89
|
-
std::make_unique<NodeTraceStateObserver>(controller);
|
|
90
|
-
controller->AddTraceStateObserver(trace_state_observer_.get());
|
|
91
|
-
tracing_file_writer_ = tracing_agent_->DefaultHandle();
|
|
92
|
-
// Only start the tracing agent if we enabled any tracing categories.
|
|
93
|
-
if (!per_process::cli_options->trace_event_categories.empty()) {
|
|
94
|
-
StartTracingAgent();
|
|
95
|
-
}
|
|
96
|
-
// Tracing must be initialized before platform threads are created.
|
|
97
|
-
platform_ = new NodePlatform(thread_pool_size, controller);
|
|
98
|
-
v8::V8::InitializePlatform(platform_);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
inline void Dispose() {
|
|
102
|
-
StopTracingAgent();
|
|
103
|
-
platform_->Shutdown();
|
|
104
|
-
delete platform_;
|
|
105
|
-
platform_ = nullptr;
|
|
106
|
-
// Destroy tracing after the platform (and platform threads) have been
|
|
107
|
-
// stopped.
|
|
108
|
-
tracing_agent_.reset(nullptr);
|
|
109
|
-
trace_state_observer_.reset(nullptr);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
inline void DrainVMTasks(v8::Isolate* isolate) {
|
|
113
|
-
platform_->DrainTasks(isolate);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
inline void StartTracingAgent() {
|
|
117
|
-
// Attach a new NodeTraceWriter only if this function hasn't been called
|
|
118
|
-
// before.
|
|
119
|
-
if (tracing_file_writer_.IsDefaultHandle()) {
|
|
120
|
-
std::vector<std::string> categories =
|
|
121
|
-
SplitString(per_process::cli_options->trace_event_categories, ',');
|
|
122
|
-
|
|
123
|
-
tracing_file_writer_ = tracing_agent_->AddClient(
|
|
124
|
-
std::set<std::string>(std::make_move_iterator(categories.begin()),
|
|
125
|
-
std::make_move_iterator(categories.end())),
|
|
126
|
-
std::unique_ptr<tracing::AsyncTraceWriter>(
|
|
127
|
-
new tracing::NodeTraceWriter(
|
|
128
|
-
per_process::cli_options->trace_event_file_pattern)),
|
|
129
|
-
tracing::Agent::kUseDefaultCategories);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
inline void StopTracingAgent() { tracing_file_writer_.reset(); }
|
|
134
|
-
|
|
135
|
-
inline tracing::AgentWriterHandle* GetTracingAgentWriter() {
|
|
136
|
-
return &tracing_file_writer_;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
inline NodePlatform* Platform() { return platform_; }
|
|
140
|
-
|
|
141
|
-
std::unique_ptr<NodeTraceStateObserver> trace_state_observer_;
|
|
142
|
-
std::unique_ptr<tracing::Agent> tracing_agent_;
|
|
143
|
-
tracing::AgentWriterHandle tracing_file_writer_;
|
|
144
|
-
NodePlatform* platform_;
|
|
145
|
-
#else // !NODE_USE_V8_PLATFORM
|
|
146
|
-
inline void Initialize(int thread_pool_size) {}
|
|
147
|
-
inline void Dispose() {}
|
|
148
|
-
inline void DrainVMTasks(v8::Isolate* isolate) {}
|
|
149
|
-
inline void StartTracingAgent() {
|
|
150
|
-
if (!per_process::cli_options->trace_event_categories.empty()) {
|
|
151
|
-
fprintf(stderr,
|
|
152
|
-
"Node compiled with NODE_USE_V8_PLATFORM=0, "
|
|
153
|
-
"so event tracing is not available.\n");
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
inline void StopTracingAgent() {}
|
|
157
|
-
|
|
158
|
-
inline tracing::AgentWriterHandle* GetTracingAgentWriter() { return nullptr; }
|
|
159
|
-
|
|
160
|
-
inline NodePlatform* Platform() { return nullptr; }
|
|
161
|
-
#endif // !NODE_USE_V8_PLATFORM
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
namespace per_process {
|
|
165
|
-
extern struct V8Platform v8_platform;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
inline void StartTracingAgent() {
|
|
169
|
-
return per_process::v8_platform.StartTracingAgent();
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
inline tracing::AgentWriterHandle* GetTracingAgentWriter() {
|
|
173
|
-
return per_process::v8_platform.GetTracingAgentWriter();
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
inline void DisposePlatform() {
|
|
177
|
-
per_process::v8_platform.Dispose();
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
} // namespace node
|
|
181
|
-
|
|
182
|
-
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
183
|
-
|
|
184
|
-
#endif // SRC_NODE_V8_PLATFORM_INL_H_
|