@zlink-systems/zlink 0.17.3

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 (199) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +198 -0
  3. package/README.typedoc.md +56 -0
  4. package/THIRD_PARTY_NOTICES.md +84 -0
  5. package/binding.gyp +27 -0
  6. package/dist/index.d.mts +3 -0
  7. package/dist/index.d.ts +24 -0
  8. package/dist/index.js +117 -0
  9. package/dist/index.mjs +4 -0
  10. package/dist/zlink/contracts/core/buffer_like.d.ts +2 -0
  11. package/dist/zlink/contracts/core/buffer_like.js +3 -0
  12. package/dist/zlink/contracts/core/context.d.ts +103 -0
  13. package/dist/zlink/contracts/core/context.js +11 -0
  14. package/dist/zlink/contracts/core/index.d.ts +3 -0
  15. package/dist/zlink/contracts/core/index.js +20 -0
  16. package/dist/zlink/contracts/core/routing_id.d.ts +28 -0
  17. package/dist/zlink/contracts/core/routing_id.js +120 -0
  18. package/dist/zlink/contracts/errors/errors.d.ts +44 -0
  19. package/dist/zlink/contracts/errors/errors.js +89 -0
  20. package/dist/zlink/contracts/errors/index.d.ts +2 -0
  21. package/dist/zlink/contracts/errors/index.js +29 -0
  22. package/dist/zlink/contracts/errors/results.d.ts +106 -0
  23. package/dist/zlink/contracts/errors/results.js +102 -0
  24. package/dist/zlink/contracts/eventing/index.d.ts +3 -0
  25. package/dist/zlink/contracts/eventing/index.js +20 -0
  26. package/dist/zlink/contracts/eventing/monitor.d.ts +157 -0
  27. package/dist/zlink/contracts/eventing/monitor.js +82 -0
  28. package/dist/zlink/contracts/eventing/poller.d.ts +76 -0
  29. package/dist/zlink/contracts/eventing/poller.js +3 -0
  30. package/dist/zlink/contracts/eventing/timer.d.ts +38 -0
  31. package/dist/zlink/contracts/eventing/timer.js +3 -0
  32. package/dist/zlink/contracts/index.d.ts +5 -0
  33. package/dist/zlink/contracts/index.js +22 -0
  34. package/dist/zlink/contracts/messaging/handlers.d.ts +5 -0
  35. package/dist/zlink/contracts/messaging/handlers.js +3 -0
  36. package/dist/zlink/contracts/messaging/index.d.ts +8 -0
  37. package/dist/zlink/contracts/messaging/index.js +15 -0
  38. package/dist/zlink/contracts/messaging/message.d.ts +68 -0
  39. package/dist/zlink/contracts/messaging/message.js +280 -0
  40. package/dist/zlink/contracts/messaging/message_parts_envelope.d.ts +14 -0
  41. package/dist/zlink/contracts/messaging/message_parts_envelope.js +56 -0
  42. package/dist/zlink/contracts/messaging/operations.d.ts +54 -0
  43. package/dist/zlink/contracts/messaging/operations.js +3 -0
  44. package/dist/zlink/contracts/messaging/received.d.ts +41 -0
  45. package/dist/zlink/contracts/messaging/received.js +130 -0
  46. package/dist/zlink/contracts/messaging/stream_packet.d.ts +14 -0
  47. package/dist/zlink/contracts/messaging/stream_packet.js +33 -0
  48. package/dist/zlink/contracts/messaging/subscription_event.d.ts +12 -0
  49. package/dist/zlink/contracts/messaging/subscription_event.js +20 -0
  50. package/dist/zlink/contracts/messaging/topic_message.d.ts +14 -0
  51. package/dist/zlink/contracts/messaging/topic_message.js +36 -0
  52. package/dist/zlink/contracts/sockets/dealer_socket.d.ts +29 -0
  53. package/dist/zlink/contracts/sockets/dealer_socket.js +3 -0
  54. package/dist/zlink/contracts/sockets/index.d.ts +10 -0
  55. package/dist/zlink/contracts/sockets/index.js +15 -0
  56. package/dist/zlink/contracts/sockets/pair_socket.d.ts +20 -0
  57. package/dist/zlink/contracts/sockets/pair_socket.js +3 -0
  58. package/dist/zlink/contracts/sockets/pubsub_sockets.d.ts +40 -0
  59. package/dist/zlink/contracts/sockets/pubsub_sockets.js +3 -0
  60. package/dist/zlink/contracts/sockets/router_socket.d.ts +32 -0
  61. package/dist/zlink/contracts/sockets/router_socket.js +3 -0
  62. package/dist/zlink/contracts/sockets/socket.d.ts +58 -0
  63. package/dist/zlink/contracts/sockets/socket.js +3 -0
  64. package/dist/zlink/contracts/sockets/socket_constants.d.ts +88 -0
  65. package/dist/zlink/contracts/sockets/socket_constants.js +67 -0
  66. package/dist/zlink/contracts/sockets/socket_options.d.ts +105 -0
  67. package/dist/zlink/contracts/sockets/socket_options.js +3 -0
  68. package/dist/zlink/contracts/sockets/stream_socket.d.ts +31 -0
  69. package/dist/zlink/contracts/sockets/stream_socket.js +3 -0
  70. package/dist/zlink/runtime/buffers/message_conversion.d.ts +6 -0
  71. package/dist/zlink/runtime/buffers/message_conversion.js +49 -0
  72. package/dist/zlink/runtime/core/context.d.ts +43 -0
  73. package/dist/zlink/runtime/core/context.js +150 -0
  74. package/dist/zlink/runtime/core/context_options.d.ts +19 -0
  75. package/dist/zlink/runtime/core/context_options.js +23 -0
  76. package/dist/zlink/runtime/core/routing_id.d.ts +3 -0
  77. package/dist/zlink/runtime/core/routing_id.js +30 -0
  78. package/dist/zlink/runtime/core/routing_id_conversion.d.ts +2 -0
  79. package/dist/zlink/runtime/core/routing_id_conversion.js +11 -0
  80. package/dist/zlink/runtime/core/runtime_info.d.ts +8 -0
  81. package/dist/zlink/runtime/core/runtime_info.js +39 -0
  82. package/dist/zlink/runtime/errors/error_mapping.d.ts +4 -0
  83. package/dist/zlink/runtime/errors/error_mapping.js +132 -0
  84. package/dist/zlink/runtime/errors/error_state.d.ts +1 -0
  85. package/dist/zlink/runtime/errors/error_state.js +15 -0
  86. package/dist/zlink/runtime/errors/native_errors.d.ts +16 -0
  87. package/dist/zlink/runtime/errors/native_errors.js +86 -0
  88. package/dist/zlink/runtime/eventing/counters.d.ts +16 -0
  89. package/dist/zlink/runtime/eventing/counters.js +33 -0
  90. package/dist/zlink/runtime/eventing/index.d.ts +6 -0
  91. package/dist/zlink/runtime/eventing/index.js +22 -0
  92. package/dist/zlink/runtime/eventing/monitor_event_state.d.ts +3 -0
  93. package/dist/zlink/runtime/eventing/monitor_event_state.js +19 -0
  94. package/dist/zlink/runtime/eventing/monitor_raw.d.ts +50 -0
  95. package/dist/zlink/runtime/eventing/monitor_raw.js +3 -0
  96. package/dist/zlink/runtime/eventing/monitor_socket.d.ts +9 -0
  97. package/dist/zlink/runtime/eventing/monitor_socket.js +39 -0
  98. package/dist/zlink/runtime/eventing/monitor_status.d.ts +3 -0
  99. package/dist/zlink/runtime/eventing/monitor_status.js +52 -0
  100. package/dist/zlink/runtime/eventing/poll_events.d.ts +20 -0
  101. package/dist/zlink/runtime/eventing/poll_events.js +92 -0
  102. package/dist/zlink/runtime/eventing/poller.d.ts +34 -0
  103. package/dist/zlink/runtime/eventing/poller.js +275 -0
  104. package/dist/zlink/runtime/eventing/thread.d.ts +6 -0
  105. package/dist/zlink/runtime/eventing/thread.js +52 -0
  106. package/dist/zlink/runtime/eventing/timer.d.ts +8 -0
  107. package/dist/zlink/runtime/eventing/timer.js +45 -0
  108. package/dist/zlink/runtime/handles/native_handle.d.ts +7 -0
  109. package/dist/zlink/runtime/handles/native_handle.js +24 -0
  110. package/dist/zlink/runtime/messaging/completion_owner.d.ts +86 -0
  111. package/dist/zlink/runtime/messaging/completion_owner.js +570 -0
  112. package/dist/zlink/runtime/messaging/message_materializer.d.ts +36 -0
  113. package/dist/zlink/runtime/messaging/message_materializer.js +199 -0
  114. package/dist/zlink/runtime/messaging/message_parts_state.d.ts +4 -0
  115. package/dist/zlink/runtime/messaging/message_parts_state.js +20 -0
  116. package/dist/zlink/runtime/messaging/message_snapshot.d.ts +13 -0
  117. package/dist/zlink/runtime/messaging/message_snapshot.js +42 -0
  118. package/dist/zlink/runtime/messaging/received_operations.d.ts +5 -0
  119. package/dist/zlink/runtime/messaging/received_operations.js +46 -0
  120. package/dist/zlink/runtime/messaging/received_state.d.ts +13 -0
  121. package/dist/zlink/runtime/messaging/received_state.js +29 -0
  122. package/dist/zlink/runtime/messaging/request_executor.d.ts +2 -0
  123. package/dist/zlink/runtime/messaging/request_executor.js +8 -0
  124. package/dist/zlink/runtime/messaging/send_operation_base.d.ts +13 -0
  125. package/dist/zlink/runtime/messaging/send_operation_base.js +52 -0
  126. package/dist/zlink/runtime/messaging/subscription_event_state.d.ts +4 -0
  127. package/dist/zlink/runtime/messaging/subscription_event_state.js +17 -0
  128. package/dist/zlink/runtime/messaging/topic_message_state.d.ts +11 -0
  129. package/dist/zlink/runtime/messaging/topic_message_state.js +75 -0
  130. package/dist/zlink/runtime/native/binding.d.ts +6 -0
  131. package/dist/zlink/runtime/native/binding.js +3 -0
  132. package/dist/zlink/runtime/native/binding_context.d.ts +14 -0
  133. package/dist/zlink/runtime/native/binding_context.js +3 -0
  134. package/dist/zlink/runtime/native/binding_core.d.ts +21 -0
  135. package/dist/zlink/runtime/native/binding_core.js +3 -0
  136. package/dist/zlink/runtime/native/binding_eventing.d.ts +40 -0
  137. package/dist/zlink/runtime/native/binding_eventing.js +3 -0
  138. package/dist/zlink/runtime/native/binding_socket.d.ts +52 -0
  139. package/dist/zlink/runtime/native/binding_socket.js +3 -0
  140. package/dist/zlink/runtime/native/binding_types.d.ts +8 -0
  141. package/dist/zlink/runtime/native/binding_types.js +3 -0
  142. package/dist/zlink/runtime/native/native.d.ts +2 -0
  143. package/dist/zlink/runtime/native/native.js +40 -0
  144. package/dist/zlink/runtime/native/native_load_paths.d.ts +16 -0
  145. package/dist/zlink/runtime/native/native_load_paths.js +165 -0
  146. package/dist/zlink/runtime/options/byte_values.d.ts +3 -0
  147. package/dist/zlink/runtime/options/byte_values.js +27 -0
  148. package/dist/zlink/runtime/options/option_mapping.d.ts +72 -0
  149. package/dist/zlink/runtime/options/option_mapping.js +41 -0
  150. package/dist/zlink/runtime/options/validation.d.ts +1 -0
  151. package/dist/zlink/runtime/options/validation.js +17 -0
  152. package/dist/zlink/runtime/public_bridge.d.ts +6 -0
  153. package/dist/zlink/runtime/public_bridge.js +23 -0
  154. package/dist/zlink/runtime/sockets/dealer_socket.d.ts +16 -0
  155. package/dist/zlink/runtime/sockets/dealer_socket.js +56 -0
  156. package/dist/zlink/runtime/sockets/index.d.ts +19 -0
  157. package/dist/zlink/runtime/sockets/index.js +27 -0
  158. package/dist/zlink/runtime/sockets/pair_socket.d.ts +7 -0
  159. package/dist/zlink/runtime/sockets/pair_socket.js +12 -0
  160. package/dist/zlink/runtime/sockets/pub_socket.d.ts +7 -0
  161. package/dist/zlink/runtime/sockets/pub_socket.js +12 -0
  162. package/dist/zlink/runtime/sockets/router_socket.d.ts +19 -0
  163. package/dist/zlink/runtime/sockets/router_socket.js +70 -0
  164. package/dist/zlink/runtime/sockets/socket_base.d.ts +21 -0
  165. package/dist/zlink/runtime/sockets/socket_base.js +102 -0
  166. package/dist/zlink/runtime/sockets/socket_operation_builders.d.ts +38 -0
  167. package/dist/zlink/runtime/sockets/socket_operation_builders.js +93 -0
  168. package/dist/zlink/runtime/sockets/socket_operations.d.ts +40 -0
  169. package/dist/zlink/runtime/sockets/socket_operations.js +177 -0
  170. package/dist/zlink/runtime/sockets/socket_options.d.ts +104 -0
  171. package/dist/zlink/runtime/sockets/socket_options.js +259 -0
  172. package/dist/zlink/runtime/sockets/socket_submit_errors.d.ts +3 -0
  173. package/dist/zlink/runtime/sockets/socket_submit_errors.js +13 -0
  174. package/dist/zlink/runtime/sockets/stream_socket.d.ts +15 -0
  175. package/dist/zlink/runtime/sockets/stream_socket.js +93 -0
  176. package/dist/zlink/runtime/sockets/sub_socket.d.ts +7 -0
  177. package/dist/zlink/runtime/sockets/sub_socket.js +12 -0
  178. package/dist/zlink/runtime/sockets/xpub_socket.d.ts +10 -0
  179. package/dist/zlink/runtime/sockets/xpub_socket.js +39 -0
  180. package/dist/zlink/runtime/sockets/xsub_socket.d.ts +7 -0
  181. package/dist/zlink/runtime/sockets/xsub_socket.js +12 -0
  182. package/native/src/addon.cc +11 -0
  183. package/native/src/addon_common_api.h +57 -0
  184. package/native/src/addon_core.cc +3974 -0
  185. package/native/src/addon_core_api.h +110 -0
  186. package/native/src/addon_core_options.cc +119 -0
  187. package/native/src/addon_core_options.h +9 -0
  188. package/native/src/addon_exports.cc +151 -0
  189. package/native/src/addon_exports.h +7 -0
  190. package/native/src/addon_message_parts.h +67 -0
  191. package/native/src/addon_message_values.h +345 -0
  192. package/native/src/addon_monitor_status_values.h +71 -0
  193. package/native/src/addon_submit_results.h +30 -0
  194. package/package.json +74 -0
  195. package/prebuilds/linux-x64/libzlink.so.0.17.3 +0 -0
  196. package/prebuilds/linux-x64/zlink.node +0 -0
  197. package/provenance/core-package-provenance.json +73 -0
  198. package/scripts/install.js +37 -0
  199. package/scripts/resolve_core.js +86 -0
@@ -0,0 +1,110 @@
1
+ /* SPDX-License-Identifier: MPL-2.0 */
2
+
3
+ #pragma once
4
+
5
+ #include "addon_common_api.h"
6
+
7
+ napi_value version (napi_env env, napi_callback_info info);
8
+ napi_value errno_value (napi_env env, napi_callback_info info);
9
+ napi_value strerror_value (napi_env env, napi_callback_info info);
10
+ napi_value has (napi_env env, napi_callback_info info);
11
+ napi_value proxy (napi_env env, napi_callback_info info);
12
+ napi_value sleep (napi_env env, napi_callback_info info);
13
+ napi_value message_from_buffer (napi_env env, napi_callback_info info);
14
+ napi_value message_allocate (napi_env env, napi_callback_info info);
15
+ napi_value message_frame_data (napi_env env, napi_callback_info info);
16
+ napi_value message_frame_copy_data (napi_env env, napi_callback_info info);
17
+ napi_value message_frame_size (napi_env env, napi_callback_info info);
18
+ napi_value message_frame_close (napi_env env, napi_callback_info info);
19
+
20
+ napi_value ctx_new (napi_env env, napi_callback_info info);
21
+ napi_value ctx_shutdown (napi_env env, napi_callback_info info);
22
+ napi_value ctx_term (napi_env env, napi_callback_info info);
23
+ napi_value ctx_setopt (napi_env env, napi_callback_info info);
24
+ napi_value ctx_getopt (napi_env env, napi_callback_info info);
25
+ napi_value ctx_getopt_data (napi_env env, napi_callback_info info);
26
+ napi_value ctx_recalculate_auto_hwm (napi_env env, napi_callback_info info);
27
+ napi_value ctx_get_auto_hwm_budget_snapshot (napi_env env, napi_callback_info info);
28
+ napi_value ctx_reset_auto_hwm_budget_metrics (napi_env env, napi_callback_info info);
29
+
30
+ napi_value socket_new (napi_env env, napi_callback_info info);
31
+ napi_value socket_close (napi_env env, napi_callback_info info);
32
+ napi_value test_begin_held_routed_multipart (napi_env env, napi_callback_info info);
33
+ napi_value test_end_held_routed_multipart (napi_env env, napi_callback_info info);
34
+ napi_value test_run_send_close_stress (napi_env env, napi_callback_info info);
35
+ napi_value socket_bind (napi_env env, napi_callback_info info);
36
+ napi_value socket_unbind (napi_env env, napi_callback_info info);
37
+ napi_value socket_connect (napi_env env, napi_callback_info info);
38
+ napi_value socket_disconnect (napi_env env, napi_callback_info info);
39
+ napi_value socket_disconnect_rid (napi_env env, napi_callback_info info);
40
+ napi_value socket_set_tls_server (napi_env env, napi_callback_info info);
41
+ napi_value socket_set_tls_client (napi_env env, napi_callback_info info);
42
+ napi_value socket_publish (napi_env env, napi_callback_info info);
43
+ napi_value socket_try_publish (napi_env env, napi_callback_info info);
44
+ napi_value socket_recv_message (napi_env env, napi_callback_info info);
45
+ napi_value socket_try_recv_message (napi_env env, napi_callback_info info);
46
+ napi_value socket_subscribe_message (napi_env env, napi_callback_info info);
47
+ napi_value socket_try_subscribe_message (napi_env env, napi_callback_info info);
48
+ napi_value socket_subscription_event (napi_env env, napi_callback_info info);
49
+ napi_value socket_try_subscription_event (napi_env env, napi_callback_info info);
50
+ napi_value subscription_at (napi_env env, napi_callback_info info);
51
+ napi_value socket_stream_recv_packet (napi_env env, napi_callback_info info);
52
+ napi_value socket_setopt (napi_env env, napi_callback_info info);
53
+ napi_value socket_getopt (napi_env env, napi_callback_info info);
54
+ napi_value socket_set_receive_flow_state (napi_env env, napi_callback_info info);
55
+ napi_value socket_set_subscription (napi_env env, napi_callback_info info);
56
+ napi_value socket_unset_subscription (napi_env env, napi_callback_info info);
57
+ napi_value handle_set_routing_id (napi_env env, napi_callback_info info);
58
+ napi_value handle_get_routing_id (napi_env env, napi_callback_info info);
59
+ napi_value socket_submit_send (napi_env env, napi_callback_info info);
60
+ napi_value socket_submit_request (napi_env env, napi_callback_info info);
61
+ napi_value socket_request_sync (napi_env env, napi_callback_info info);
62
+ napi_value socket_completion_recv (napi_env env, napi_callback_info info);
63
+ napi_value test_completion_close_count (napi_env env, napi_callback_info info);
64
+ napi_value socket_reply (napi_env env, napi_callback_info info);
65
+ napi_value router_recv_message (napi_env env, napi_callback_info info);
66
+ napi_value router_try_recv_message (napi_env env, napi_callback_info info);
67
+
68
+ napi_value monitor_open (napi_env env, napi_callback_info info);
69
+ napi_value monitor_recv (napi_env env, napi_callback_info info);
70
+ napi_value monitor_try_recv (napi_env env, napi_callback_info info);
71
+ napi_value monitor_status (napi_env env, napi_callback_info info);
72
+ napi_value monitor_close (napi_env env, napi_callback_info info);
73
+
74
+ napi_value poller_new (napi_env env, napi_callback_info info);
75
+ napi_value poller_destroy (napi_env env, napi_callback_info info);
76
+ napi_value poller_size (napi_env env, napi_callback_info info);
77
+ napi_value poller_add (napi_env env, napi_callback_info info);
78
+ napi_value poller_modify (napi_env env, napi_callback_info info);
79
+ napi_value poller_remove (napi_env env, napi_callback_info info);
80
+ napi_value poller_add_fd (napi_env env, napi_callback_info info);
81
+ napi_value poller_modify_fd (napi_env env, napi_callback_info info);
82
+ napi_value poller_remove_fd (napi_env env, napi_callback_info info);
83
+ napi_value poller_add_timer (napi_env env, napi_callback_info info);
84
+ napi_value poller_remove_timer (napi_env env, napi_callback_info info);
85
+ napi_value poller_wait (napi_env env, napi_callback_info info);
86
+ napi_value poll_events_new (napi_env env, napi_callback_info info);
87
+ napi_value poll_events_destroy (napi_env env, napi_callback_info info);
88
+ napi_value poll_events_source_kind (napi_env env, napi_callback_info info);
89
+ napi_value poll_events_slot (napi_env env, napi_callback_info info);
90
+ napi_value poll_events_revents (napi_env env, napi_callback_info info);
91
+ napi_value poll_events_fd (napi_env env, napi_callback_info info);
92
+ napi_value poller_wait_into (napi_env env, napi_callback_info info);
93
+ napi_value socket_readable_watch_start (napi_env env, napi_callback_info info);
94
+ napi_value socket_readable_watch_stop (napi_env env, napi_callback_info info);
95
+
96
+ napi_value timer_new (napi_env env, napi_callback_info info);
97
+ napi_value timer_destroy (napi_env env, napi_callback_info info);
98
+ napi_value timer_start (napi_env env, napi_callback_info info);
99
+ napi_value timer_stop (napi_env env, napi_callback_info info);
100
+ napi_value timer_recv (napi_env env, napi_callback_info info);
101
+
102
+ napi_value stopwatch_start (napi_env env, napi_callback_info info);
103
+ napi_value stopwatch_intermediate (napi_env env, napi_callback_info info);
104
+ napi_value stopwatch_stop (napi_env env, napi_callback_info info);
105
+ napi_value atomic_counter_new (napi_env env, napi_callback_info info);
106
+ napi_value atomic_counter_set (napi_env env, napi_callback_info info);
107
+ napi_value atomic_counter_inc (napi_env env, napi_callback_info info);
108
+ napi_value atomic_counter_dec (napi_env env, napi_callback_info info);
109
+ napi_value atomic_counter_value (napi_env env, napi_callback_info info);
110
+ napi_value atomic_counter_destroy (napi_env env, napi_callback_info info);
@@ -0,0 +1,119 @@
1
+ /* SPDX-License-Identifier: MPL-2.0 */
2
+
3
+ #include "addon_core_options.h"
4
+
5
+ int set_socket_option (void *sock, int32_t opt, const void *data, size_t len)
6
+ {
7
+ switch (opt) {
8
+ case ZLINK_ROUTER_OPT_MANDATORY:
9
+ return zlink_set_router_option (sock, ZLINK_ROUTER_OPT_MANDATORY, data, len);
10
+ case ZLINK_ROUTER_OPT_PROBE:
11
+ return zlink_set_router_option (sock, ZLINK_ROUTER_OPT_PROBE, data, len);
12
+ case ZLINK_ROUTER_OPT_CONNECT_ROUTING_ID:
13
+ return zlink_set_router_option (sock, ZLINK_ROUTER_OPT_CONNECT_ROUTING_ID, data, len);
14
+ case ZLINK_ROUTER_OPT_REQUEST_TIMEOUT_MS:
15
+ return zlink_set_router_option (sock, ZLINK_ROUTER_OPT_REQUEST_TIMEOUT_MS, data, len);
16
+ case ZLINK_ROUTER_OPT_WEIGHT:
17
+ return zlink_set_router_option (sock, ZLINK_ROUTER_OPT_WEIGHT, data, len);
18
+ case ZLINK_DEALER_OPT_PROBE:
19
+ return zlink_set_dealer_option (sock, ZLINK_DEALER_OPT_PROBE, data, len);
20
+ case ZLINK_DEALER_OPT_REQUEST_TIMEOUT_MS:
21
+ return zlink_set_dealer_option (sock, ZLINK_DEALER_OPT_REQUEST_TIMEOUT_MS, data, len);
22
+ case ZLINK_DEALER_OPT_WEIGHT:
23
+ return zlink_set_dealer_option (sock, ZLINK_DEALER_OPT_WEIGHT, data, len);
24
+ case ZLINK_STREAM_OPT_NOTIFY:
25
+ return zlink_set_stream_option (sock, ZLINK_STREAM_OPT_NOTIFY, data, len);
26
+ case ZLINK_STREAM_OPT_RECV_MODE:
27
+ return zlink_set_stream_option (sock, ZLINK_STREAM_OPT_RECV_MODE, data, len);
28
+ case ZLINK_PUB_OPT_VERBOSE:
29
+ return zlink_set_pub_option (sock, ZLINK_PUB_OPT_VERBOSE, data, len);
30
+ case ZLINK_PUB_OPT_VERBOSER:
31
+ return zlink_set_pub_option (sock, ZLINK_PUB_OPT_VERBOSER, data, len);
32
+ case ZLINK_PUB_OPT_MANUAL:
33
+ return zlink_set_pub_option (sock, ZLINK_PUB_OPT_MANUAL, data, len);
34
+ case ZLINK_PUB_OPT_MANUAL_LAST_VALUE:
35
+ return zlink_set_pub_option (sock, ZLINK_PUB_OPT_MANUAL_LAST_VALUE, data, len);
36
+ case ZLINK_PUB_OPT_NODROP:
37
+ return zlink_set_pub_option (sock, ZLINK_PUB_OPT_NODROP, data, len);
38
+ case ZLINK_PUB_OPT_WELCOME_MSG:
39
+ return zlink_set_pub_option (sock, ZLINK_PUB_OPT_WELCOME_MSG, data, len);
40
+ case ZLINK_PUB_OPT_TOPICS_COUNT:
41
+ return zlink_set_pub_option (sock, ZLINK_PUB_OPT_TOPICS_COUNT, data, len);
42
+ case ZLINK_PUB_OPT_APPROVE_SUBSCRIBE:
43
+ return zlink_set_pub_option (sock, ZLINK_PUB_OPT_APPROVE_SUBSCRIBE, data, len);
44
+ case ZLINK_PUB_OPT_REJECT_SUBSCRIBE:
45
+ return zlink_set_pub_option (sock, ZLINK_PUB_OPT_REJECT_SUBSCRIBE, data, len);
46
+ case ZLINK_SUB_OPT_TOPICS_COUNT:
47
+ return zlink_set_sub_option (sock, ZLINK_SUB_OPT_TOPICS_COUNT, data, len);
48
+ default:
49
+ return zlink_set_option (sock, static_cast<zlink_option_t> (opt), data, len);
50
+ }
51
+ }
52
+
53
+ int get_socket_option (void *sock, int32_t opt, void *data, size_t *len)
54
+ {
55
+ switch (opt) {
56
+ case ZLINK_ROUTER_OPT_MANDATORY:
57
+ return zlink_get_router_option (sock, ZLINK_ROUTER_OPT_MANDATORY, data, len);
58
+ case ZLINK_ROUTER_OPT_PROBE:
59
+ return zlink_get_router_option (sock, ZLINK_ROUTER_OPT_PROBE, data, len);
60
+ case ZLINK_ROUTER_OPT_CONNECT_ROUTING_ID:
61
+ return zlink_get_router_option (sock, ZLINK_ROUTER_OPT_CONNECT_ROUTING_ID, data, len);
62
+ case ZLINK_ROUTER_OPT_REQUEST_TIMEOUT_MS:
63
+ return zlink_get_router_option (sock, ZLINK_ROUTER_OPT_REQUEST_TIMEOUT_MS, data, len);
64
+ case ZLINK_ROUTER_OPT_WEIGHT:
65
+ return zlink_get_router_option (sock, ZLINK_ROUTER_OPT_WEIGHT, data, len);
66
+ case ZLINK_DEALER_OPT_PROBE:
67
+ return zlink_get_dealer_option (sock, ZLINK_DEALER_OPT_PROBE, data, len);
68
+ case ZLINK_DEALER_OPT_REQUEST_TIMEOUT_MS:
69
+ return zlink_get_dealer_option (sock, ZLINK_DEALER_OPT_REQUEST_TIMEOUT_MS, data, len);
70
+ case ZLINK_DEALER_OPT_WEIGHT:
71
+ return zlink_get_dealer_option (sock, ZLINK_DEALER_OPT_WEIGHT, data, len);
72
+ case ZLINK_STREAM_OPT_NOTIFY:
73
+ return zlink_get_stream_option (sock, ZLINK_STREAM_OPT_NOTIFY, data, len);
74
+ case ZLINK_STREAM_OPT_RECV_MODE:
75
+ return zlink_get_stream_option (sock, ZLINK_STREAM_OPT_RECV_MODE, data, len);
76
+ case ZLINK_PUB_OPT_VERBOSE:
77
+ return zlink_get_pub_option (sock, ZLINK_PUB_OPT_VERBOSE, data, len);
78
+ case ZLINK_PUB_OPT_VERBOSER:
79
+ return zlink_get_pub_option (sock, ZLINK_PUB_OPT_VERBOSER, data, len);
80
+ case ZLINK_PUB_OPT_MANUAL:
81
+ return zlink_get_pub_option (sock, ZLINK_PUB_OPT_MANUAL, data, len);
82
+ case ZLINK_PUB_OPT_MANUAL_LAST_VALUE:
83
+ return zlink_get_pub_option (sock, ZLINK_PUB_OPT_MANUAL_LAST_VALUE, data, len);
84
+ case ZLINK_PUB_OPT_NODROP:
85
+ return zlink_get_pub_option (sock, ZLINK_PUB_OPT_NODROP, data, len);
86
+ case ZLINK_PUB_OPT_WELCOME_MSG:
87
+ return zlink_get_pub_option (sock, ZLINK_PUB_OPT_WELCOME_MSG, data, len);
88
+ case ZLINK_PUB_OPT_TOPICS_COUNT:
89
+ return zlink_get_pub_option (sock, ZLINK_PUB_OPT_TOPICS_COUNT, data, len);
90
+ case ZLINK_SUB_OPT_TOPICS_COUNT:
91
+ return zlink_get_sub_option (sock, ZLINK_SUB_OPT_TOPICS_COUNT, data, len);
92
+ default:
93
+ return zlink_get_option (sock, static_cast<zlink_option_t> (opt), data, len);
94
+ }
95
+ }
96
+
97
+ size_t initial_getopt_buffer_len (int32_t opt)
98
+ {
99
+ switch (opt) {
100
+ case ZLINK_ROUTER_OPT_CONNECT_ROUTING_ID:
101
+ return 255;
102
+ case ZLINK_OPT_LAST_ENDPOINT:
103
+ case ZLINK_OPT_TLS_CERT:
104
+ case ZLINK_OPT_TLS_KEY:
105
+ case ZLINK_OPT_TLS_CA:
106
+ case ZLINK_OPT_TLS_HOSTNAME:
107
+ case ZLINK_OPT_TLS_PASSWORD:
108
+ case ZLINK_OPT_BINDTODEVICE:
109
+ case ZLINK_OPT_ZMP_METADATA:
110
+ return 256;
111
+ case ZLINK_OPT_MAXMSGSIZE:
112
+ return sizeof (int64_t);
113
+ case ZLINK_OPT_SNDHWM:
114
+ case ZLINK_OPT_RCVHWM:
115
+ return sizeof (uint64_t);
116
+ default:
117
+ return sizeof (int);
118
+ }
119
+ }
@@ -0,0 +1,9 @@
1
+ /* SPDX-License-Identifier: MPL-2.0 */
2
+
3
+ #pragma once
4
+
5
+ #include "addon_common_api.h"
6
+
7
+ int set_socket_option (void *sock, int32_t opt, const void *data, size_t len);
8
+ int get_socket_option (void *sock, int32_t opt, void *data, size_t *len);
9
+ size_t initial_getopt_buffer_len (int32_t opt);
@@ -0,0 +1,151 @@
1
+ /* SPDX-License-Identifier: MPL-2.0 */
2
+
3
+ #include "addon_exports.h"
4
+
5
+ #include "addon_core_api.h"
6
+
7
+ #define ZLINK_METHOD(js_name, native_fn) \
8
+ { \
9
+ js_name, 0, native_fn, 0, 0, 0, napi_default, 0 \
10
+ }
11
+
12
+ static void
13
+ define_exports (napi_env env, napi_value exports, napi_property_descriptor *descs, size_t count)
14
+ {
15
+ napi_define_properties (env, exports, count, descs);
16
+ }
17
+
18
+ static void release_send_success (napi_env env, void *data, void *)
19
+ {
20
+ napi_delete_reference (env, static_cast<napi_ref> (data));
21
+ }
22
+
23
+ void define_core_exports (napi_env env, napi_value exports)
24
+ {
25
+ napi_property_descriptor descs[] = {
26
+ ZLINK_METHOD ("version", version),
27
+ ZLINK_METHOD ("errno", errno_value),
28
+ ZLINK_METHOD ("strerror", strerror_value),
29
+ ZLINK_METHOD ("has", has),
30
+ ZLINK_METHOD ("proxy", proxy),
31
+ ZLINK_METHOD ("sleep", sleep),
32
+ ZLINK_METHOD ("messageFromBuffer", message_from_buffer),
33
+ ZLINK_METHOD ("messageAllocate", message_allocate),
34
+ ZLINK_METHOD ("messageFrameData", message_frame_data),
35
+ ZLINK_METHOD ("messageFrameCopyData", message_frame_copy_data),
36
+ ZLINK_METHOD ("messageFrameSize", message_frame_size),
37
+ ZLINK_METHOD ("messageFrameClose", message_frame_close),
38
+ ZLINK_METHOD ("ctxNew", ctx_new),
39
+ ZLINK_METHOD ("ctxShutdown", ctx_shutdown),
40
+ ZLINK_METHOD ("ctxTerm", ctx_term),
41
+ ZLINK_METHOD ("ctxSetOpt", ctx_setopt),
42
+ ZLINK_METHOD ("ctxGetOpt", ctx_getopt),
43
+ ZLINK_METHOD ("ctxGetOptData", ctx_getopt_data),
44
+ ZLINK_METHOD ("ctxRecalculateAutoHwm", ctx_recalculate_auto_hwm),
45
+ ZLINK_METHOD ("ctxGetAutoHwmBudgetSnapshot", ctx_get_auto_hwm_budget_snapshot),
46
+ ZLINK_METHOD ("ctxResetAutoHwmBudgetMetrics", ctx_reset_auto_hwm_budget_metrics),
47
+ ZLINK_METHOD ("socketNew", socket_new),
48
+ ZLINK_METHOD ("socketClose", socket_close),
49
+ ZLINK_METHOD ("socketBind", socket_bind),
50
+ ZLINK_METHOD ("socketUnbind", socket_unbind),
51
+ ZLINK_METHOD ("socketConnect", socket_connect),
52
+ ZLINK_METHOD ("socketDisconnect", socket_disconnect),
53
+ ZLINK_METHOD ("socketDisconnectRid", socket_disconnect_rid),
54
+ ZLINK_METHOD ("socketSetTlsServer", socket_set_tls_server),
55
+ ZLINK_METHOD ("socketSetTlsClient", socket_set_tls_client),
56
+ ZLINK_METHOD ("socketPublish", socket_publish),
57
+ ZLINK_METHOD ("socketTryPublish", socket_try_publish),
58
+ ZLINK_METHOD ("socketRecvMessage", socket_recv_message),
59
+ ZLINK_METHOD ("socketRecvMessageNoWait", socket_try_recv_message),
60
+ ZLINK_METHOD ("socketSubscribeMessage", socket_subscribe_message),
61
+ ZLINK_METHOD ("socketTrySubscribeMessage", socket_try_subscribe_message),
62
+ ZLINK_METHOD ("socketSubscriptionEvent", socket_subscription_event),
63
+ ZLINK_METHOD ("socketTrySubscriptionEvent", socket_try_subscription_event),
64
+ ZLINK_METHOD ("subscriptionAt", subscription_at),
65
+ ZLINK_METHOD ("socketStreamRecvPacket", socket_stream_recv_packet),
66
+ ZLINK_METHOD ("socketSetOpt", socket_setopt),
67
+ ZLINK_METHOD ("socketGetOpt", socket_getopt),
68
+ ZLINK_METHOD ("socketSetReceiveFlowState", socket_set_receive_flow_state),
69
+ ZLINK_METHOD ("socketSetSubscription", socket_set_subscription),
70
+ ZLINK_METHOD ("socketUnsetSubscription", socket_unset_subscription),
71
+ ZLINK_METHOD ("handleSetRoutingId", handle_set_routing_id),
72
+ ZLINK_METHOD ("handleGetRoutingId", handle_get_routing_id),
73
+ ZLINK_METHOD ("socketSubmitSend", socket_submit_send),
74
+ ZLINK_METHOD ("socketSubmitRequest", socket_submit_request),
75
+ ZLINK_METHOD ("socketRequestSync", socket_request_sync),
76
+ ZLINK_METHOD ("socketCompletionRecv", socket_completion_recv),
77
+ ZLINK_METHOD ("socketReadableWatchStart", socket_readable_watch_start),
78
+ ZLINK_METHOD ("socketReadableWatchStop", socket_readable_watch_stop),
79
+ ZLINK_METHOD ("testCompletionCloseCount", test_completion_close_count),
80
+ ZLINK_METHOD ("socketReply", socket_reply),
81
+ ZLINK_METHOD ("routerRecvMessage", router_recv_message),
82
+ ZLINK_METHOD ("routerRecvMessageNoWait", router_try_recv_message),
83
+ ZLINK_METHOD ("monitorOpen", monitor_open),
84
+ ZLINK_METHOD ("monitorRecv", monitor_recv),
85
+ ZLINK_METHOD ("monitorRecvNoWait", monitor_try_recv),
86
+ ZLINK_METHOD ("monitorStatus", monitor_status),
87
+ ZLINK_METHOD ("monitorClose", monitor_close),
88
+ ZLINK_METHOD ("pollerNew", poller_new),
89
+ ZLINK_METHOD ("pollerDestroy", poller_destroy),
90
+ ZLINK_METHOD ("pollerSize", poller_size),
91
+ ZLINK_METHOD ("pollerAdd", poller_add),
92
+ ZLINK_METHOD ("pollerModify", poller_modify),
93
+ ZLINK_METHOD ("pollerRemove", poller_remove),
94
+ ZLINK_METHOD ("pollerAddFd", poller_add_fd),
95
+ ZLINK_METHOD ("pollerModifyFd", poller_modify_fd),
96
+ ZLINK_METHOD ("pollerRemoveFd", poller_remove_fd),
97
+ ZLINK_METHOD ("pollerAddTimer", poller_add_timer),
98
+ ZLINK_METHOD ("pollerRemoveTimer", poller_remove_timer),
99
+ ZLINK_METHOD ("pollerWait", poller_wait),
100
+ ZLINK_METHOD ("pollEventsNew", poll_events_new),
101
+ ZLINK_METHOD ("pollEventsDestroy", poll_events_destroy),
102
+ ZLINK_METHOD ("pollEventsSourceKind", poll_events_source_kind),
103
+ ZLINK_METHOD ("pollEventsSlot", poll_events_slot),
104
+ ZLINK_METHOD ("pollEventsRevents", poll_events_revents),
105
+ ZLINK_METHOD ("pollEventsFd", poll_events_fd),
106
+ ZLINK_METHOD ("pollerWaitInto", poller_wait_into),
107
+ ZLINK_METHOD ("timerNew", timer_new),
108
+ ZLINK_METHOD ("timerDestroy", timer_destroy),
109
+ ZLINK_METHOD ("timerStart", timer_start),
110
+ ZLINK_METHOD ("timerStop", timer_stop),
111
+ ZLINK_METHOD ("timerRecv", timer_recv),
112
+ ZLINK_METHOD ("stopwatchStart", stopwatch_start),
113
+ ZLINK_METHOD ("stopwatchIntermediate", stopwatch_intermediate),
114
+ ZLINK_METHOD ("stopwatchStop", stopwatch_stop),
115
+ ZLINK_METHOD ("atomicCounterNew", atomic_counter_new),
116
+ ZLINK_METHOD ("atomicCounterSet", atomic_counter_set),
117
+ ZLINK_METHOD ("atomicCounterInc", atomic_counter_inc),
118
+ ZLINK_METHOD ("atomicCounterDec", atomic_counter_dec),
119
+ ZLINK_METHOD ("atomicCounterValue", atomic_counter_value),
120
+ ZLINK_METHOD ("atomicCounterDestroy", atomic_counter_destroy),
121
+ };
122
+ // The native function owns its immutable inline-success result. Each Node
123
+ // environment has its own function/reference; no process-global V8 handles.
124
+ napi_value success;
125
+ napi_create_object (env, &success);
126
+ set_int64_property (env, success, "result", ZLINK_SUBMIT_OK);
127
+ set_int64_property (env, success, "nativeErrno", 0);
128
+ set_uint64_bigint_property (env, success, "completionId", 0);
129
+ napi_object_freeze (env, success);
130
+ napi_ref success_ref;
131
+ napi_create_reference (env, success, 1, &success_ref);
132
+ for (size_t index = 0; index < sizeof (descs) / sizeof (*descs); ++index) {
133
+ if (strcmp (descs[index].utf8name, "socketSubmitSend") == 0)
134
+ descs[index].data = success_ref;
135
+ }
136
+ define_exports (env, exports, descs, sizeof (descs) / sizeof (*descs));
137
+ napi_value send_function;
138
+ napi_get_named_property (env, exports, "socketSubmitSend", &send_function);
139
+ napi_add_finalizer (
140
+ env, send_function, success_ref, release_send_success, NULL, NULL);
141
+
142
+ if (getenv ("ZLINK_NODE_TEST_HOOKS")) {
143
+ napi_property_descriptor test_descs[] = {
144
+ ZLINK_METHOD ("testBeginHeldRoutedMultipart", test_begin_held_routed_multipart),
145
+ ZLINK_METHOD ("testEndHeldRoutedMultipart", test_end_held_routed_multipart),
146
+ ZLINK_METHOD ("testRunSendCloseStress", test_run_send_close_stress),
147
+ };
148
+ define_exports (
149
+ env, exports, test_descs, sizeof (test_descs) / sizeof (*test_descs));
150
+ }
151
+ }
@@ -0,0 +1,7 @@
1
+ /* SPDX-License-Identifier: MPL-2.0 */
2
+
3
+ #pragma once
4
+
5
+ #include "addon_common_api.h"
6
+
7
+ void define_core_exports (napi_env env, napi_value exports);
@@ -0,0 +1,67 @@
1
+ /* SPDX-License-Identifier: MPL-2.0 */
2
+
3
+ #pragma once
4
+
5
+ #include "addon_common_api.h"
6
+
7
+ inline void copy_routing_id (zlink_routing_id_t *out, const zlink_routing_id_t *in)
8
+ {
9
+ if (!out)
10
+ return;
11
+ if (in)
12
+ memcpy (out, in, sizeof (*out));
13
+ else
14
+ memset (out, 0, sizeof (*out));
15
+ }
16
+
17
+ inline bool parse_routing_id_value (napi_env env,
18
+ napi_value value,
19
+ zlink_routing_id_t *routing_id)
20
+ {
21
+ void *data = NULL;
22
+ size_t len = 0;
23
+ if (napi_get_buffer_info (env, value, &data, &len) != napi_ok) {
24
+ napi_throw_type_error (env, NULL, "routingId must be Buffer");
25
+ return false;
26
+ }
27
+ if (len == 0 || len > sizeof (routing_id->data)) {
28
+ napi_throw_range_error (env, NULL, "routingId length must be 1..255 bytes");
29
+ return false;
30
+ }
31
+ memset (routing_id, 0, sizeof (*routing_id));
32
+ routing_id->size = static_cast<uint8_t> (len);
33
+ memcpy (routing_id->data, data, len);
34
+ return true;
35
+ }
36
+
37
+ inline void close_recv_parts (zlink_msg_t *parts, size_t part_count)
38
+ {
39
+ if (!parts)
40
+ return;
41
+ zlink_multipart_close (parts, part_count);
42
+ }
43
+
44
+ template <typename Submit>
45
+ inline int submit_msg_parts (zlink_msg_t *parts, size_t part_count, Submit submit)
46
+ {
47
+ if (!parts || part_count == 0) {
48
+ errno = EFAULT;
49
+ return ZLINK_SUBMIT_INVALID_ARGUMENT;
50
+ }
51
+
52
+ for (size_t i = 0; i < part_count; ++i) {
53
+ const bool is_final = i + 1u == part_count;
54
+ const zlink_part_flag_t part_flag = is_final ? ZLINK_PART_FINAL : ZLINK_PART_MORE;
55
+ int rc = submit (&parts[i], part_flag, is_final);
56
+ if (rc != ZLINK_SUBMIT_OK) {
57
+ // Core consumes the attempted native part even when the record is
58
+ // rejected. Release the empty attempted slot and every untouched
59
+ // later slot in this staging copy; the JavaScript Message owners
60
+ // remain separate and untouched.
61
+ zlink_multipart_close (parts, part_count);
62
+ return rc;
63
+ }
64
+ }
65
+
66
+ return ZLINK_SUBMIT_OK;
67
+ }