@encharm/cws 4.5.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.
Files changed (237) hide show
  1. package/binding.gyp +1 -1
  2. package/dist/bindings/cws_darwin_arm64_node137.node +0 -0
  3. package/dist/bindings/cws_linux_x64_node137.node +0 -0
  4. package/package.json +1 -1
  5. package/src/Addon.h +6 -1
  6. package/src/headers/24/acorn_version.h +6 -0
  7. package/src/headers/24/addon_permission.h +31 -0
  8. package/src/headers/24/agent.h +195 -0
  9. package/src/headers/24/aliased_buffer-inl.h +244 -0
  10. package/src/headers/24/aliased_buffer.h +206 -0
  11. package/src/headers/24/aliased_struct-inl.h +54 -0
  12. package/src/headers/24/aliased_struct.h +63 -0
  13. package/src/headers/24/amaro_version.h +6 -0
  14. package/src/headers/24/application.h +165 -0
  15. package/src/headers/24/async_context_frame.h +33 -0
  16. package/src/headers/24/async_wrap-inl.h +96 -0
  17. package/src/headers/24/async_wrap.h +244 -0
  18. package/src/headers/24/base_object-inl.h +330 -0
  19. package/src/headers/24/base_object.h +338 -0
  20. package/src/headers/24/base_object_types.h +74 -0
  21. package/src/headers/24/bindingdata.h +272 -0
  22. package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
  23. package/src/headers/24/blob_serializer_deserializer.h +132 -0
  24. package/src/headers/24/callback_queue-inl.h +97 -0
  25. package/src/headers/24/callback_queue.h +79 -0
  26. package/src/headers/24/cares_wrap.h +447 -0
  27. package/src/headers/24/child_process_permission.h +31 -0
  28. package/src/headers/24/cid.h +127 -0
  29. package/src/headers/24/cjs_module_lexer_version.h +6 -0
  30. package/src/headers/24/cleanup_queue-inl.h +36 -0
  31. package/src/headers/24/cleanup_queue.h +79 -0
  32. package/src/headers/24/compile_cache.h +113 -0
  33. package/src/headers/24/connect_wrap.h +26 -0
  34. package/src/headers/24/connection_wrap.h +30 -0
  35. package/src/headers/24/cppgc_helpers-inl.h +65 -0
  36. package/src/headers/24/cppgc_helpers.h +162 -0
  37. package/src/headers/24/crypto/crypto_aes.h +97 -0
  38. package/src/headers/24/crypto/crypto_argon2.h +86 -0
  39. package/src/headers/24/crypto/crypto_bio.h +193 -0
  40. package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
  41. package/src/headers/24/crypto/crypto_cipher.h +281 -0
  42. package/src/headers/24/crypto/crypto_clienthello-inl.h +90 -0
  43. package/src/headers/24/crypto/crypto_clienthello.h +131 -0
  44. package/src/headers/24/crypto/crypto_common.h +48 -0
  45. package/src/headers/24/crypto/crypto_context.h +171 -0
  46. package/src/headers/24/crypto/crypto_dh.h +126 -0
  47. package/src/headers/24/crypto/crypto_dsa.h +50 -0
  48. package/src/headers/24/crypto/crypto_ec.h +163 -0
  49. package/src/headers/24/crypto/crypto_hash.h +89 -0
  50. package/src/headers/24/crypto/crypto_hkdf.h +61 -0
  51. package/src/headers/24/crypto/crypto_hmac.h +92 -0
  52. package/src/headers/24/crypto/crypto_kem.h +113 -0
  53. package/src/headers/24/crypto/crypto_keygen.h +290 -0
  54. package/src/headers/24/crypto/crypto_keys.h +392 -0
  55. package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
  56. package/src/headers/24/crypto/crypto_pbkdf2.h +74 -0
  57. package/src/headers/24/crypto/crypto_random.h +124 -0
  58. package/src/headers/24/crypto/crypto_rsa.h +136 -0
  59. package/src/headers/24/crypto/crypto_scrypt.h +85 -0
  60. package/src/headers/24/crypto/crypto_sig.h +156 -0
  61. package/src/headers/24/crypto/crypto_spkac.h +21 -0
  62. package/src/headers/24/crypto/crypto_timing.h +20 -0
  63. package/src/headers/24/crypto/crypto_tls.h +309 -0
  64. package/src/headers/24/crypto/crypto_util.h +598 -0
  65. package/src/headers/24/crypto/crypto_x509.h +140 -0
  66. package/src/headers/24/data.h +148 -0
  67. package/src/headers/24/debug_utils-inl.h +232 -0
  68. package/src/headers/24/debug_utils.h +193 -0
  69. package/src/headers/24/defs.h +254 -0
  70. package/src/headers/24/diagnosticfilename-inl.h +33 -0
  71. package/src/headers/24/embedded_data.h +17 -0
  72. package/src/headers/24/encoding_binding.h +60 -0
  73. package/src/headers/24/endpoint.h +421 -0
  74. package/src/headers/24/env-inl.h +935 -0
  75. package/src/headers/24/env.h +1257 -0
  76. package/src/headers/24/env_properties.h +561 -0
  77. package/src/headers/24/fs_permission.h +167 -0
  78. package/src/headers/24/handle_wrap.h +123 -0
  79. package/src/headers/24/histogram-inl.h +107 -0
  80. package/src/headers/24/histogram.h +279 -0
  81. package/src/headers/24/http3.h +44 -0
  82. package/src/headers/24/inspector_agent.h +165 -0
  83. package/src/headers/24/inspector_io.h +78 -0
  84. package/src/headers/24/inspector_permission.h +31 -0
  85. package/src/headers/24/inspector_profiler.h +149 -0
  86. package/src/headers/24/inspector_socket.h +60 -0
  87. package/src/headers/24/inspector_socket_server.h +110 -0
  88. package/src/headers/24/io_agent.h +30 -0
  89. package/src/headers/24/js_native_api.h +615 -0
  90. package/src/headers/24/js_native_api_types.h +211 -0
  91. package/src/headers/24/js_native_api_v8.h +485 -0
  92. package/src/headers/24/js_native_api_v8_internals.h +45 -0
  93. package/src/headers/24/js_stream.h +52 -0
  94. package/src/headers/24/json_parser.h +40 -0
  95. package/src/headers/24/json_utils.h +172 -0
  96. package/src/headers/24/logstream.h +81 -0
  97. package/src/headers/24/main_thread_interface.h +116 -0
  98. package/src/headers/24/memory_tracker-inl.h +454 -0
  99. package/src/headers/24/memory_tracker.h +333 -0
  100. package/src/headers/24/module_wrap.h +229 -0
  101. package/src/headers/24/ncrypto.h +1625 -0
  102. package/src/headers/24/network_agent.h +118 -0
  103. package/src/headers/24/network_inspector.h +45 -0
  104. package/src/headers/24/network_resource_manager.h +29 -0
  105. package/src/headers/24/node.h +1620 -0
  106. package/src/headers/24/node_api.h +269 -0
  107. package/src/headers/24/node_api_internals.h +46 -0
  108. package/src/headers/24/node_api_types.h +52 -0
  109. package/src/headers/24/node_binding.h +163 -0
  110. package/src/headers/24/node_blob.h +159 -0
  111. package/src/headers/24/node_bob-inl.h +36 -0
  112. package/src/headers/24/node_bob.h +107 -0
  113. package/src/headers/24/node_buffer.h +92 -0
  114. package/src/headers/24/node_builtins.h +223 -0
  115. package/src/headers/24/node_config_file.h +65 -0
  116. package/src/headers/24/node_constants.h +82 -0
  117. package/src/headers/24/node_context_data.h +168 -0
  118. package/src/headers/24/node_contextify.h +261 -0
  119. package/src/headers/24/node_crypto.h +62 -0
  120. package/src/headers/24/node_debug.h +25 -0
  121. package/src/headers/24/node_dir.h +52 -0
  122. package/src/headers/24/node_dotenv.h +45 -0
  123. package/src/headers/24/node_errors.h +391 -0
  124. package/src/headers/24/node_exit_code.h +54 -0
  125. package/src/headers/24/node_external_reference.h +167 -0
  126. package/src/headers/24/node_file-inl.h +412 -0
  127. package/src/headers/24/node_file.h +540 -0
  128. package/src/headers/24/node_http2.h +1175 -0
  129. package/src/headers/24/node_http2_state.h +159 -0
  130. package/src/headers/24/node_http_common-inl.h +198 -0
  131. package/src/headers/24/node_http_common.h +535 -0
  132. package/src/headers/24/node_i18n.h +132 -0
  133. package/src/headers/24/node_internals.h +476 -0
  134. package/src/headers/24/node_json.h +24 -0
  135. package/src/headers/24/node_large_page.h +34 -0
  136. package/src/headers/24/node_locks.h +180 -0
  137. package/src/headers/24/node_main_instance.h +67 -0
  138. package/src/headers/24/node_mem-inl.h +112 -0
  139. package/src/headers/24/node_mem.h +45 -0
  140. package/src/headers/24/node_messaging.h +389 -0
  141. package/src/headers/24/node_metadata.h +164 -0
  142. package/src/headers/24/node_modules.h +93 -0
  143. package/src/headers/24/node_mutex.h +323 -0
  144. package/src/headers/24/node_object_wrap.h +132 -0
  145. package/src/headers/24/node_options-inl.h +524 -0
  146. package/src/headers/24/node_options.h +682 -0
  147. package/src/headers/24/node_perf.h +166 -0
  148. package/src/headers/24/node_perf_common.h +102 -0
  149. package/src/headers/24/node_platform.h +286 -0
  150. package/src/headers/24/node_process-inl.h +26 -0
  151. package/src/headers/24/node_process.h +111 -0
  152. package/src/headers/24/node_realm-inl.h +153 -0
  153. package/src/headers/24/node_realm.h +236 -0
  154. package/src/headers/24/node_report.h +43 -0
  155. package/src/headers/24/node_revert.h +82 -0
  156. package/src/headers/24/node_root_certs.h +3546 -0
  157. package/src/headers/24/node_sea.h +74 -0
  158. package/src/headers/24/node_shadow_realm.h +46 -0
  159. package/src/headers/24/node_snapshot_builder.h +57 -0
  160. package/src/headers/24/node_snapshotable.h +174 -0
  161. package/src/headers/24/node_sockaddr-inl.h +257 -0
  162. package/src/headers/24/node_sockaddr.h +394 -0
  163. package/src/headers/24/node_sqlite.h +270 -0
  164. package/src/headers/24/node_stat_watcher.h +73 -0
  165. package/src/headers/24/node_string.h +101 -0
  166. package/src/headers/24/node_task_runner.h +92 -0
  167. package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
  168. package/src/headers/24/node_threadsafe_cow.h +105 -0
  169. package/src/headers/24/node_trace_buffer.h +83 -0
  170. package/src/headers/24/node_trace_writer.h +75 -0
  171. package/src/headers/24/node_union_bytes.h +81 -0
  172. package/src/headers/24/node_url.h +101 -0
  173. package/src/headers/24/node_url_pattern.h +118 -0
  174. package/src/headers/24/node_v8.h +77 -0
  175. package/src/headers/24/node_v8_platform-inl.h +185 -0
  176. package/src/headers/24/node_version.h +110 -0
  177. package/src/headers/24/node_wasi.h +185 -0
  178. package/src/headers/24/node_wasm_web_api.h +55 -0
  179. package/src/headers/24/node_watchdog.h +154 -0
  180. package/src/headers/24/node_webstorage.h +60 -0
  181. package/src/headers/24/node_worker.h +159 -0
  182. package/src/headers/24/packet.h +155 -0
  183. package/src/headers/24/path.h +33 -0
  184. package/src/headers/24/permission/addon_permission.h +31 -0
  185. package/src/headers/24/permission/child_process_permission.h +31 -0
  186. package/src/headers/24/permission/fs_permission.h +167 -0
  187. package/src/headers/24/permission/inspector_permission.h +31 -0
  188. package/src/headers/24/permission/permission.h +100 -0
  189. package/src/headers/24/permission/permission_base.h +65 -0
  190. package/src/headers/24/permission/wasi_permission.h +31 -0
  191. package/src/headers/24/permission/worker_permission.h +31 -0
  192. package/src/headers/24/permission.h +100 -0
  193. package/src/headers/24/permission_base.h +65 -0
  194. package/src/headers/24/pipe_wrap.h +80 -0
  195. package/src/headers/24/preferredaddress.h +72 -0
  196. package/src/headers/24/protocol_helper.h +27 -0
  197. package/src/headers/24/queue.h +306 -0
  198. package/src/headers/24/req_wrap-inl.h +176 -0
  199. package/src/headers/24/req_wrap.h +79 -0
  200. package/src/headers/24/runtime_agent.h +41 -0
  201. package/src/headers/24/session.h +528 -0
  202. package/src/headers/24/sessionticket.h +108 -0
  203. package/src/headers/24/spawn_sync.h +243 -0
  204. package/src/headers/24/stream_base-inl.h +173 -0
  205. package/src/headers/24/stream_base.h +478 -0
  206. package/src/headers/24/stream_pipe.h +76 -0
  207. package/src/headers/24/stream_wrap.h +132 -0
  208. package/src/headers/24/streams.h +370 -0
  209. package/src/headers/24/string_bytes.h +109 -0
  210. package/src/headers/24/string_decoder-inl.h +31 -0
  211. package/src/headers/24/string_decoder.h +49 -0
  212. package/src/headers/24/target_agent.h +75 -0
  213. package/src/headers/24/tcp_wrap.h +105 -0
  214. package/src/headers/24/threadpoolwork-inl.h +70 -0
  215. package/src/headers/24/timer_wrap-inl.h +32 -0
  216. package/src/headers/24/timer_wrap.h +87 -0
  217. package/src/headers/24/timers.h +75 -0
  218. package/src/headers/24/tlscontext.h +228 -0
  219. package/src/headers/24/tokens.h +256 -0
  220. package/src/headers/24/trace_event.h +722 -0
  221. package/src/headers/24/trace_event_common.h +1109 -0
  222. package/src/headers/24/traced_value.h +129 -0
  223. package/src/headers/24/tracing_agent.h +43 -0
  224. package/src/headers/24/transportparams.h +166 -0
  225. package/src/headers/24/tty_wrap.h +65 -0
  226. package/src/headers/24/udp_wrap.h +230 -0
  227. package/src/headers/24/undici_version.h +6 -0
  228. package/src/headers/24/util-inl.h +711 -0
  229. package/src/headers/24/util.h +1016 -0
  230. package/src/headers/24/v8-external-memory-accounter.h +60 -0
  231. package/src/headers/24/v8-fast-api-calls.h +819 -0
  232. package/src/headers/24/v8-inspector.h +426 -0
  233. package/src/headers/24/wasi_permission.h +31 -0
  234. package/src/headers/24/worker_agent.h +40 -0
  235. package/src/headers/24/worker_inspector.h +124 -0
  236. package/src/headers/24/worker_permission.h +31 -0
  237. package/src/headers/24/zlib_version.h +6 -0
@@ -0,0 +1,176 @@
1
+ #ifndef SRC_REQ_WRAP_INL_H_
2
+ #define SRC_REQ_WRAP_INL_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "req_wrap.h"
7
+ #include "async_wrap-inl.h"
8
+ #include "uv.h"
9
+
10
+ namespace node {
11
+
12
+ ReqWrapBase::ReqWrapBase(Environment* env) {
13
+ CHECK(env->has_run_bootstrapping_code());
14
+ env->req_wrap_queue()->PushBack(this);
15
+ }
16
+
17
+ template <typename T>
18
+ ReqWrap<T>::ReqWrap(Environment* env,
19
+ v8::Local<v8::Object> object,
20
+ AsyncWrap::ProviderType provider)
21
+ : AsyncWrap(env, object, provider),
22
+ ReqWrapBase(env) {
23
+ MakeWeak();
24
+ Reset();
25
+ }
26
+
27
+ template <typename T>
28
+ ReqWrap<T>::~ReqWrap() {}
29
+
30
+ template <typename T>
31
+ void ReqWrap<T>::Dispatched() {
32
+ req_.data = this;
33
+ }
34
+
35
+ template <typename T>
36
+ void ReqWrap<T>::Reset() {
37
+ original_callback_ = nullptr;
38
+ req_.data = nullptr;
39
+ }
40
+
41
+ template <typename T>
42
+ ReqWrap<T>* ReqWrap<T>::from_req(T* req) {
43
+ return ContainerOf(&ReqWrap<T>::req_, req);
44
+ }
45
+
46
+ template <typename T>
47
+ void ReqWrap<T>::Cancel() {
48
+ if (req_.data == this) // Only cancel if already dispatched.
49
+ uv_cancel(reinterpret_cast<uv_req_t*>(&req_));
50
+ }
51
+
52
+ template <typename T>
53
+ bool ReqWrap<T>::IsDispatched() {
54
+ return req_.data != nullptr;
55
+ }
56
+
57
+ template <typename T>
58
+ AsyncWrap* ReqWrap<T>::GetAsyncWrap() {
59
+ return this;
60
+ }
61
+
62
+ // Below is dark template magic designed to invoke libuv functions that
63
+ // initialize uv_req_t instances in a unified fashion, to allow easier
64
+ // tracking of active/inactive requests.
65
+
66
+ // Invoke a generic libuv function that initializes uv_req_t instances.
67
+ // This is, unfortunately, necessary since they come in three different
68
+ // variants that can not all be invoked in the same way:
69
+ // - int uv_foo(uv_loop_t* loop, uv_req_t* request, ...);
70
+ // - int uv_foo(uv_req_t* request, ...);
71
+ // - void uv_foo(uv_req_t* request, ...);
72
+ template <typename ReqT, typename T>
73
+ struct CallLibuvFunction;
74
+
75
+ // Detect `int uv_foo(uv_loop_t* loop, uv_req_t* request, ...);`.
76
+ template <typename ReqT, typename... Args>
77
+ struct CallLibuvFunction<ReqT, int(*)(uv_loop_t*, ReqT*, Args...)> {
78
+ using T = int(*)(uv_loop_t*, ReqT*, Args...);
79
+ template <typename... PassedArgs>
80
+ static int Call(T fn, uv_loop_t* loop, ReqT* req, PassedArgs... args) {
81
+ return fn(loop, req, args...);
82
+ }
83
+ };
84
+
85
+ // Detect `int uv_foo(uv_req_t* request, ...);`.
86
+ template <typename ReqT, typename... Args>
87
+ struct CallLibuvFunction<ReqT, int(*)(ReqT*, Args...)> {
88
+ using T = int(*)(ReqT*, Args...);
89
+ template <typename... PassedArgs>
90
+ static int Call(T fn, uv_loop_t* loop, ReqT* req, PassedArgs... args) {
91
+ return fn(req, args...);
92
+ }
93
+ };
94
+
95
+ // Detect `void uv_foo(uv_req_t* request, ...);`.
96
+ template <typename ReqT, typename... Args>
97
+ struct CallLibuvFunction<ReqT, void(*)(ReqT*, Args...)> {
98
+ using T = void(*)(ReqT*, Args...);
99
+ template <typename... PassedArgs>
100
+ static int Call(T fn, uv_loop_t* loop, ReqT* req, PassedArgs... args) {
101
+ fn(req, args...);
102
+ return 0;
103
+ }
104
+ };
105
+
106
+ // This is slightly darker magic: This template is 'applied' to each parameter
107
+ // passed to the libuv function. If the parameter type (aka `T`) is a
108
+ // function type, it is assumed that this it is the request callback, and a
109
+ // wrapper that calls the original callback is created.
110
+ // If not, the parameter is passed through verbatim.
111
+ template <typename ReqT, typename T>
112
+ struct MakeLibuvRequestCallback {
113
+ static T For(ReqWrap<ReqT>* req_wrap, T v) {
114
+ static_assert(!is_callable<T>::value,
115
+ "MakeLibuvRequestCallback missed a callback");
116
+ return v;
117
+ }
118
+ };
119
+
120
+ // Match the `void callback(uv_req_t*, ...);` signature that all libuv
121
+ // callbacks use.
122
+ template <typename ReqT, typename... Args>
123
+ struct MakeLibuvRequestCallback<ReqT, void(*)(ReqT*, Args...)> {
124
+ using F = void(*)(ReqT* req, Args... args);
125
+
126
+ static void Wrapper(ReqT* req, Args... args) {
127
+ BaseObjectPtr<ReqWrap<ReqT>> req_wrap{ReqWrap<ReqT>::from_req(req)};
128
+ req_wrap->Detach();
129
+ req_wrap->env()->DecreaseWaitingRequestCounter();
130
+ F original_callback = reinterpret_cast<F>(req_wrap->original_callback_);
131
+ original_callback(req, args...);
132
+ }
133
+
134
+ static F For(ReqWrap<ReqT>* req_wrap, F v) {
135
+ CHECK_NULL(req_wrap->original_callback_);
136
+ req_wrap->original_callback_ =
137
+ reinterpret_cast<typename ReqWrap<ReqT>::callback_t>(v);
138
+ return Wrapper;
139
+ }
140
+ };
141
+
142
+ template <typename T>
143
+ template <typename LibuvFunction, typename... Args>
144
+ int ReqWrap<T>::Dispatch(LibuvFunction fn, Args... args) {
145
+ Dispatched();
146
+ // This expands as:
147
+ //
148
+ // int err = fn(env()->event_loop(), req(), arg1, arg2, Wrapper, arg3, ...)
149
+ // ^ ^ ^
150
+ // | | |
151
+ // \-- Omitted if `fn` has no | |
152
+ // first `uv_loop_t*` argument | |
153
+ // | |
154
+ // A function callback whose first argument | |
155
+ // matches the libuv request type is replaced ---/ |
156
+ // by the `Wrapper` method defined above |
157
+ // |
158
+ // Other (non-function) arguments are passed -----/
159
+ // through verbatim
160
+ int err = CallLibuvFunction<T, LibuvFunction>::Call(
161
+ fn,
162
+ env()->event_loop(),
163
+ req(),
164
+ MakeLibuvRequestCallback<T, Args>::For(this, args)...);
165
+ if (err >= 0) {
166
+ ClearWeak();
167
+ env()->IncreaseWaitingRequestCounter();
168
+ }
169
+ return err;
170
+ }
171
+
172
+ } // namespace node
173
+
174
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
175
+
176
+ #endif // SRC_REQ_WRAP_INL_H_
@@ -0,0 +1,79 @@
1
+ #ifndef SRC_REQ_WRAP_H_
2
+ #define SRC_REQ_WRAP_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "async_wrap.h"
7
+ #include "util.h"
8
+ #include "v8.h"
9
+
10
+ namespace node {
11
+
12
+ class Environment;
13
+
14
+ class ReqWrapBase {
15
+ public:
16
+ explicit inline ReqWrapBase(Environment* env);
17
+
18
+ virtual ~ReqWrapBase() = default;
19
+
20
+ virtual void Cancel() = 0;
21
+ virtual AsyncWrap* GetAsyncWrap() = 0;
22
+
23
+ private:
24
+ friend int GenDebugSymbols();
25
+ friend class Environment;
26
+
27
+ ListNode<ReqWrapBase> req_wrap_queue_;
28
+ };
29
+
30
+ template <typename T>
31
+ class ReqWrap : public AsyncWrap, public ReqWrapBase {
32
+ public:
33
+ inline ReqWrap(Environment* env,
34
+ v8::Local<v8::Object> object,
35
+ AsyncWrap::ProviderType provider);
36
+ inline ~ReqWrap() override;
37
+ // Call this after the req has been dispatched, if that did not already
38
+ // happen by using Dispatch().
39
+ inline void Dispatched();
40
+ // Call this after a request has finished, if re-using this object is planned.
41
+ inline void Reset();
42
+ T* req() { return &req_; }
43
+ inline void Cancel() final;
44
+ inline AsyncWrap* GetAsyncWrap() override;
45
+
46
+ static ReqWrap* from_req(T* req);
47
+
48
+ template <typename LibuvFunction, typename... Args>
49
+ inline int Dispatch(LibuvFunction fn, Args... args);
50
+
51
+ inline bool IsDispatched();
52
+
53
+ private:
54
+ friend int GenDebugSymbols();
55
+
56
+ // Adding `friend struct MakeLibuvRequestCallback` is not enough anymore
57
+ // for some reason. Consider this private.
58
+ public:
59
+ typedef void (*callback_t)();
60
+ callback_t original_callback_ = nullptr;
61
+
62
+ protected:
63
+ // req_wrap_queue_ needs to be at a fixed offset from the start of the class
64
+ // because it is used by ContainerOf to calculate the address of the embedding
65
+ // ReqWrap. ContainerOf compiles down to simple, fixed pointer arithmetic. It
66
+ // is also used by src/node_postmortem_metadata.cc to calculate offsets and
67
+ // generate debug symbols for ReqWrap, which assumes that the position of
68
+ // members in memory are predictable. sizeof(req_) depends on the type of T,
69
+ // so req_wrap_queue_ would no longer be at a fixed offset if it came after
70
+ // req_. For more information please refer to
71
+ // `doc/contributing/node-postmortem-support.md`
72
+ T req_;
73
+ };
74
+
75
+ } // namespace node
76
+
77
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
78
+
79
+ #endif // SRC_REQ_WRAP_H_
@@ -0,0 +1,41 @@
1
+ #ifndef SRC_INSPECTOR_RUNTIME_AGENT_H_
2
+ #define SRC_INSPECTOR_RUNTIME_AGENT_H_
3
+
4
+ #include "node/inspector/protocol/NodeRuntime.h"
5
+ #include "v8.h"
6
+
7
+ namespace node {
8
+ class Environment;
9
+
10
+ namespace inspector {
11
+ namespace protocol {
12
+
13
+ class RuntimeAgent : public NodeRuntime::Backend {
14
+ public:
15
+ RuntimeAgent();
16
+
17
+ void Wire(UberDispatcher* dispatcher);
18
+
19
+ DispatchResponse notifyWhenWaitingForDisconnect(bool enabled) override;
20
+
21
+ DispatchResponse enable() override;
22
+
23
+ DispatchResponse disable() override;
24
+
25
+ bool notifyWaitingForDisconnect();
26
+
27
+ void setWaitingForDebugger();
28
+
29
+ void unsetWaitingForDebugger();
30
+
31
+ private:
32
+ std::shared_ptr<NodeRuntime::Frontend> frontend_;
33
+ bool notify_when_waiting_for_disconnect_;
34
+ bool enabled_;
35
+ bool is_waiting_for_debugger_;
36
+ };
37
+ } // namespace protocol
38
+ } // namespace inspector
39
+ } // namespace node
40
+
41
+ #endif // SRC_INSPECTOR_RUNTIME_AGENT_H_