react-native-nitro-dgram 0.1.4
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/android/CMakeLists.txt +24 -0
- package/android/OnLoad.cpp +6 -0
- package/android/build.gradle +64 -0
- package/android/libs/arm64-v8a/librust_c_udp.so +0 -0
- package/android/libs/armeabi-v7a/librust_c_udp.so +0 -0
- package/android/libs/x86/librust_c_udp.so +0 -0
- package/android/libs/x86_64/librust_c_udp.so +0 -0
- package/android/src/main/java/com/margelo/nitro/udp/NitroUdpPackage.java +25 -0
- package/cpp/HybridUdpDriver.cpp +21 -0
- package/cpp/HybridUdpDriver.hpp +18 -0
- package/cpp/HybridUdpSocketDriver.cpp +252 -0
- package/cpp/HybridUdpSocketDriver.hpp +88 -0
- package/cpp/UdpBindings.hpp +83 -0
- package/cpp/UdpManager.hpp +108 -0
- package/ios/Frameworks/RustCUdp.xcframework/Info.plist +44 -0
- package/ios/Frameworks/RustCUdp.xcframework/ios-arm64/RustCUdp.framework/Info.plist +20 -0
- package/ios/Frameworks/RustCUdp.xcframework/ios-arm64/RustCUdp.framework/RustCUdp +0 -0
- package/ios/Frameworks/RustCUdp.xcframework/ios-arm64_x86_64-simulator/RustCUdp.framework/Info.plist +20 -0
- package/ios/Frameworks/RustCUdp.xcframework/ios-arm64_x86_64-simulator/RustCUdp.framework/RustCUdp +0 -0
- package/lib/Driver.d.ts +2 -0
- package/lib/Driver.js +6 -0
- package/lib/Driver.js.map +1 -0
- package/lib/Udp.nitro.d.ts +54 -0
- package/lib/Udp.nitro.js +3 -0
- package/lib/Udp.nitro.js.map +1 -0
- package/lib/index.d.ts +82 -0
- package/lib/index.js +375 -0
- package/lib/index.js.map +1 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/RustCUdp+autolinking.cmake +84 -0
- package/nitrogen/generated/android/RustCUdp+autolinking.gradle +27 -0
- package/nitrogen/generated/android/RustCUdpOnLoad.cpp +53 -0
- package/nitrogen/generated/android/RustCUdpOnLoad.hpp +25 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__shared_ptr_ArrayBuffer__std__string_double.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
- package/nitrogen/generated/android/c++/JHybridUdpDriverSpec.cpp +57 -0
- package/nitrogen/generated/android/c++/JHybridUdpDriverSpec.hpp +65 -0
- package/nitrogen/generated/android/c++/JHybridUdpSocketDriverSpec.cpp +261 -0
- package/nitrogen/generated/android/c++/JHybridUdpSocketDriverSpec.hpp +97 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/udp/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/udp/Func_void_std__shared_ptr_ArrayBuffer__std__string_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/udp/Func_void_std__string.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/udp/HybridUdpDriverSpec.kt +57 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/udp/HybridUdpSocketDriverSpec.kt +212 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/udp/RustCUdpOnLoad.kt +35 -0
- package/nitrogen/generated/ios/RustCUdp+autolinking.rb +60 -0
- package/nitrogen/generated/ios/RustCUdp-Swift-Cxx-Bridge.cpp +74 -0
- package/nitrogen/generated/ios/RustCUdp-Swift-Cxx-Bridge.hpp +195 -0
- package/nitrogen/generated/ios/RustCUdp-Swift-Cxx-Umbrella.hpp +53 -0
- package/nitrogen/generated/ios/RustCUdpAutolinking.mm +35 -0
- package/nitrogen/generated/ios/RustCUdpAutolinking.swift +12 -0
- package/nitrogen/generated/ios/c++/HybridUdpDriverSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridUdpDriverSpecSwift.hpp +80 -0
- package/nitrogen/generated/ios/c++/HybridUdpSocketDriverSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridUdpSocketDriverSpecSwift.hpp +302 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_ArrayBuffer__std__string_double.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridUdpDriverSpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridUdpDriverSpec_cxx.swift +141 -0
- package/nitrogen/generated/ios/swift/HybridUdpSocketDriverSpec.swift +84 -0
- package/nitrogen/generated/ios/swift/HybridUdpSocketDriverSpec_cxx.swift +527 -0
- package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.cpp +32 -0
- package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.hpp +74 -0
- package/nitrogen/generated/shared/c++/HybridUdpDriverSpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridUdpDriverSpec.hpp +66 -0
- package/nitrogen/generated/shared/c++/HybridUdpSocketDriverSpec.cpp +54 -0
- package/nitrogen/generated/shared/c++/HybridUdpSocketDriverSpec.hpp +98 -0
- package/package.json +59 -0
- package/react-native-nitro-dgram.podspec +45 -0
- package/src/Driver.ts +4 -0
- package/src/Udp.nitro.ts +55 -0
- package/src/index.ts +414 -0
package/lib/index.js
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Socket = exports.BlockList = void 0;
|
|
4
|
+
exports.createSocket = createSocket;
|
|
5
|
+
const eventemitter3_1 = require("eventemitter3");
|
|
6
|
+
const Driver_1 = require("./Driver");
|
|
7
|
+
const react_native_nitro_buffer_1 = require("react-native-nitro-buffer");
|
|
8
|
+
/**
|
|
9
|
+
* 100% compatible with Node.js dgram module.
|
|
10
|
+
*/
|
|
11
|
+
function isIP(input) {
|
|
12
|
+
if (/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(input))
|
|
13
|
+
return 4;
|
|
14
|
+
if (/^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/.test(input))
|
|
15
|
+
return 6;
|
|
16
|
+
if (/^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$/.test(input))
|
|
17
|
+
return 6;
|
|
18
|
+
return 0;
|
|
19
|
+
}
|
|
20
|
+
class BlockList {
|
|
21
|
+
_rules = [];
|
|
22
|
+
addAddress(address, family = 'ipv4') {
|
|
23
|
+
this._rules.push({ type: 'address', data: { address, family } });
|
|
24
|
+
}
|
|
25
|
+
addRange(start, end, family = 'ipv4') {
|
|
26
|
+
this._rules.push({ type: 'range', data: { start, end, family } });
|
|
27
|
+
}
|
|
28
|
+
addSubnet(net, prefix, family = 'ipv4') {
|
|
29
|
+
this._rules.push({ type: 'subnet', data: { net, prefix, family } });
|
|
30
|
+
}
|
|
31
|
+
check(address, family = 'ipv4') {
|
|
32
|
+
// Simple implementation for now
|
|
33
|
+
for (const rule of this._rules) {
|
|
34
|
+
if (rule.type === 'address' && rule.data.address === address)
|
|
35
|
+
return true;
|
|
36
|
+
// Range and subnet check would need IP calculation logic
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.BlockList = BlockList;
|
|
42
|
+
class Socket extends eventemitter3_1.EventEmitter {
|
|
43
|
+
_driver;
|
|
44
|
+
_type;
|
|
45
|
+
_bound = false;
|
|
46
|
+
_closed = false;
|
|
47
|
+
_connected = false;
|
|
48
|
+
_signal;
|
|
49
|
+
_lookup;
|
|
50
|
+
_receiveBlockList;
|
|
51
|
+
_sendBlockList;
|
|
52
|
+
constructor(type) {
|
|
53
|
+
super();
|
|
54
|
+
const options = typeof type === 'string' ? { type } : type;
|
|
55
|
+
this._type = options.type;
|
|
56
|
+
this._lookup = options.lookup;
|
|
57
|
+
this._receiveBlockList = options.receiveBlockList;
|
|
58
|
+
this._sendBlockList = options.sendBlockList;
|
|
59
|
+
this._driver = Driver_1.Driver.createSocket();
|
|
60
|
+
this._setupEvents();
|
|
61
|
+
if (options.signal) {
|
|
62
|
+
this._signal = options.signal;
|
|
63
|
+
if (this._signal.aborted) {
|
|
64
|
+
setImmediate(() => this.close());
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this._signal.addEventListener('abort', () => {
|
|
68
|
+
this.close();
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async [Symbol.asyncDispose]() {
|
|
74
|
+
if (this._closed)
|
|
75
|
+
return;
|
|
76
|
+
return new Promise((resolve) => {
|
|
77
|
+
this.once('close', resolve);
|
|
78
|
+
this.close();
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
_setupEvents() {
|
|
82
|
+
this._driver.onMessage = (data, address, port) => {
|
|
83
|
+
const family = isIP(address) === 6 ? 'IPv6' : 'IPv4';
|
|
84
|
+
if (this._receiveBlockList && this._receiveBlockList.check(address, family === 'IPv6' ? 'ipv6' : 'ipv4')) {
|
|
85
|
+
return; // Discard blocked message
|
|
86
|
+
}
|
|
87
|
+
const buffer = react_native_nitro_buffer_1.Buffer.from(data);
|
|
88
|
+
const rinfo = {
|
|
89
|
+
address,
|
|
90
|
+
family,
|
|
91
|
+
port,
|
|
92
|
+
size: buffer.length
|
|
93
|
+
};
|
|
94
|
+
this.emit('message', buffer, rinfo);
|
|
95
|
+
};
|
|
96
|
+
this._driver.onConnect = () => {
|
|
97
|
+
this._connected = true;
|
|
98
|
+
this.emit('connect');
|
|
99
|
+
};
|
|
100
|
+
this._driver.onError = (error) => {
|
|
101
|
+
this.emit('error', new Error(error));
|
|
102
|
+
};
|
|
103
|
+
this._driver.onClose = () => {
|
|
104
|
+
this._closed = true;
|
|
105
|
+
this.emit('close');
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
bind(arg1, arg2, arg3) {
|
|
109
|
+
if (this._bound)
|
|
110
|
+
throw new Error('Already bound');
|
|
111
|
+
let port = 0;
|
|
112
|
+
let address = '';
|
|
113
|
+
let callback;
|
|
114
|
+
if (typeof arg1 === 'object' && arg1 !== null) {
|
|
115
|
+
port = arg1.port || 0;
|
|
116
|
+
address = arg1.address || '';
|
|
117
|
+
callback = arg2;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
port = arg1 || 0;
|
|
121
|
+
address = arg2 || '';
|
|
122
|
+
callback = arg3;
|
|
123
|
+
}
|
|
124
|
+
if (callback)
|
|
125
|
+
this.once('listening', callback);
|
|
126
|
+
const ipv6Only = false; // TODO: handle from options
|
|
127
|
+
const result = this._driver.bind(port, address, ipv6Only);
|
|
128
|
+
if (result === 0) {
|
|
129
|
+
this._bound = true;
|
|
130
|
+
setImmediate(() => this.emit('listening'));
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
setImmediate(() => this.emit('error', new Error(`Bind failed with code ${result}`)));
|
|
134
|
+
}
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
connect(port, address, callback) {
|
|
138
|
+
if (this._closed)
|
|
139
|
+
throw new Error('Socket is closed');
|
|
140
|
+
if (!this._bound) {
|
|
141
|
+
this.bind(0);
|
|
142
|
+
}
|
|
143
|
+
if (callback)
|
|
144
|
+
this.once('connect', callback);
|
|
145
|
+
const targetAddress = address || (this._type === 'udp4' ? '127.0.0.1' : '::1');
|
|
146
|
+
const result = this._driver.connect(port, targetAddress);
|
|
147
|
+
if (result !== 0) {
|
|
148
|
+
setImmediate(() => this.emit('error', new Error(`Connect failed with code ${result}`)));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
disconnect() {
|
|
152
|
+
if (this._closed)
|
|
153
|
+
throw new Error('Socket is closed');
|
|
154
|
+
if (!this._connected)
|
|
155
|
+
return;
|
|
156
|
+
const result = this._driver.disconnect();
|
|
157
|
+
if (result === 0) {
|
|
158
|
+
this._connected = false;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
// Some platforms might not support disconnect directy
|
|
162
|
+
// If disconnect failed but node says it should work, we might need to recreate socket
|
|
163
|
+
// but for now we'll just emit error or ignore if it's ENOTSUP
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
send(msg, ...args) {
|
|
167
|
+
if (this._closed)
|
|
168
|
+
throw new Error('Socket is closed');
|
|
169
|
+
let offset = 0;
|
|
170
|
+
let length = 0;
|
|
171
|
+
let port = 0;
|
|
172
|
+
let address = '';
|
|
173
|
+
let callback;
|
|
174
|
+
// Node.js send() behavior:
|
|
175
|
+
// If connected, port and address should not be provided.
|
|
176
|
+
// If not connected, port and address must be provided.
|
|
177
|
+
if (!this._bound) {
|
|
178
|
+
this.bind(0);
|
|
179
|
+
}
|
|
180
|
+
if (this._connected) {
|
|
181
|
+
// (msg, [offset, length,] [callback])
|
|
182
|
+
if (typeof args[0] === 'function') {
|
|
183
|
+
callback = args[0];
|
|
184
|
+
length = msg.length;
|
|
185
|
+
}
|
|
186
|
+
else if (typeof args[0] === 'number' && typeof args[1] === 'number') {
|
|
187
|
+
offset = args[0];
|
|
188
|
+
length = args[1];
|
|
189
|
+
callback = args[2];
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
length = msg.length;
|
|
193
|
+
}
|
|
194
|
+
// Use connected peer info
|
|
195
|
+
port = this._driver.getRemotePort();
|
|
196
|
+
address = this._driver.getRemoteAddress();
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
// (msg, [offset, length,] port [, address] [, callback])
|
|
200
|
+
if (args.length >= 4) {
|
|
201
|
+
// (msg, offset, length, port, address, callback)
|
|
202
|
+
offset = args[0];
|
|
203
|
+
length = args[1];
|
|
204
|
+
port = args[2];
|
|
205
|
+
address = args[3] || '127.0.0.1';
|
|
206
|
+
callback = args[4];
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
// (msg, port, address, callback)
|
|
210
|
+
port = args[0];
|
|
211
|
+
address = args[1] || '127.0.0.1';
|
|
212
|
+
callback = args[2];
|
|
213
|
+
length = msg.length;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const handleSend = (targetAddress) => {
|
|
217
|
+
const family = isIP(targetAddress) === 6 ? 'IPv6' : 'IPv4';
|
|
218
|
+
if (this._sendBlockList && this._sendBlockList.check(targetAddress, family === 'IPv6' ? 'ipv6' : 'ipv4')) {
|
|
219
|
+
const err = new Error(`Address ${targetAddress} is blocked by sendBlockList`);
|
|
220
|
+
if (callback)
|
|
221
|
+
setImmediate(() => callback(err, 0));
|
|
222
|
+
else
|
|
223
|
+
this.emit('error', err);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
let bytesSent = 0;
|
|
227
|
+
if (Array.isArray(msg)) {
|
|
228
|
+
const abs = msg.map(m => {
|
|
229
|
+
const b = react_native_nitro_buffer_1.Buffer.from(m);
|
|
230
|
+
return b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength);
|
|
231
|
+
});
|
|
232
|
+
bytesSent = this._driver.sendMultiple(abs, port, targetAddress);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
const buffer = react_native_nitro_buffer_1.Buffer.from(msg);
|
|
236
|
+
const finalBuffer = (offset === 0 && (length === 0 || length === buffer.length))
|
|
237
|
+
? buffer
|
|
238
|
+
: buffer.slice(offset, offset + (length || buffer.length));
|
|
239
|
+
const ab = finalBuffer.buffer.slice(finalBuffer.byteOffset, finalBuffer.byteOffset + finalBuffer.byteLength);
|
|
240
|
+
bytesSent = this._driver.send(ab, port, targetAddress);
|
|
241
|
+
}
|
|
242
|
+
if (callback) {
|
|
243
|
+
if (bytesSent >= 0) {
|
|
244
|
+
setImmediate(() => callback(null, bytesSent));
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
setImmediate(() => callback(new Error(`Send failed with code ${bytesSent}`), 0));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
if (this._lookup && isIP(address) === 0 && !this._connected && address !== '') {
|
|
252
|
+
this._lookup(address, {}, (err, resolvedAddr) => {
|
|
253
|
+
if (err) {
|
|
254
|
+
if (callback)
|
|
255
|
+
callback(err, 0);
|
|
256
|
+
else
|
|
257
|
+
this.emit('error', err);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
handleSend(resolvedAddr);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
handleSend(address);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
close(callback) {
|
|
268
|
+
if (this._closed) {
|
|
269
|
+
if (callback)
|
|
270
|
+
setImmediate(callback);
|
|
271
|
+
return this;
|
|
272
|
+
}
|
|
273
|
+
if (callback)
|
|
274
|
+
this.once('close', callback);
|
|
275
|
+
// Only bound sockets have native listener, so only they receive native onClose
|
|
276
|
+
if (this._bound) {
|
|
277
|
+
this._driver.close();
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
// For unbound sockets, emit close directly since native layer won't
|
|
281
|
+
this._closed = true;
|
|
282
|
+
setImmediate(() => this.emit('close'));
|
|
283
|
+
}
|
|
284
|
+
return this;
|
|
285
|
+
}
|
|
286
|
+
address() {
|
|
287
|
+
return {
|
|
288
|
+
address: this._driver.getLocalAddress(),
|
|
289
|
+
family: this._type === 'udp6' ? 'IPv6' : 'IPv4',
|
|
290
|
+
port: this._driver.getLocalPort()
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
remoteAddress() {
|
|
294
|
+
if (!this._connected)
|
|
295
|
+
throw new Error('Socket is not connected');
|
|
296
|
+
return {
|
|
297
|
+
address: this._driver.getRemoteAddress(),
|
|
298
|
+
family: isIP(this._driver.getRemoteAddress()) === 6 ? 'IPv6' : 'IPv4',
|
|
299
|
+
port: this._driver.getRemotePort()
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
setBroadcast(flag) {
|
|
303
|
+
this._driver.setBroadcast(flag);
|
|
304
|
+
}
|
|
305
|
+
setTTL(ttl) {
|
|
306
|
+
this._driver.setTTL(ttl);
|
|
307
|
+
}
|
|
308
|
+
setMulticastTTL(ttl) {
|
|
309
|
+
this._driver.setMulticastTTL(ttl);
|
|
310
|
+
}
|
|
311
|
+
setMulticastLoopback(flag) {
|
|
312
|
+
this._driver.setMulticastLoopback(flag);
|
|
313
|
+
}
|
|
314
|
+
setMulticastInterface(interfaceAddress) {
|
|
315
|
+
this._driver.setMulticastInterface(interfaceAddress);
|
|
316
|
+
}
|
|
317
|
+
addMembership(multicastAddress, interfaceAddress) {
|
|
318
|
+
this._driver.addMembership(multicastAddress, interfaceAddress);
|
|
319
|
+
}
|
|
320
|
+
dropMembership(multicastAddress, interfaceAddress) {
|
|
321
|
+
this._driver.dropMembership(multicastAddress, interfaceAddress);
|
|
322
|
+
}
|
|
323
|
+
addSourceSpecificMembership(sourceAddress, groupAddress, interfaceAddress) {
|
|
324
|
+
this._driver.addSourceSpecificMembership(sourceAddress, groupAddress, interfaceAddress);
|
|
325
|
+
}
|
|
326
|
+
dropSourceSpecificMembership(sourceAddress, groupAddress, interfaceAddress) {
|
|
327
|
+
this._driver.dropSourceSpecificMembership(sourceAddress, groupAddress, interfaceAddress);
|
|
328
|
+
}
|
|
329
|
+
getRecvBufferSize() {
|
|
330
|
+
if (this._driver.id === 0)
|
|
331
|
+
throw new Error('Socket is not bound');
|
|
332
|
+
return this._driver.getRecvBufferSize();
|
|
333
|
+
}
|
|
334
|
+
setRecvBufferSize(size) {
|
|
335
|
+
if (this._driver.id === 0)
|
|
336
|
+
throw new Error('Socket is not bound');
|
|
337
|
+
this._driver.setRecvBufferSize(size);
|
|
338
|
+
}
|
|
339
|
+
getSendBufferSize() {
|
|
340
|
+
if (this._driver.id === 0)
|
|
341
|
+
throw new Error('Socket is not bound');
|
|
342
|
+
return this._driver.getSendBufferSize();
|
|
343
|
+
}
|
|
344
|
+
setSendBufferSize(size) {
|
|
345
|
+
if (this._driver.id === 0)
|
|
346
|
+
throw new Error('Socket is not bound');
|
|
347
|
+
this._driver.setSendBufferSize(size);
|
|
348
|
+
}
|
|
349
|
+
getSendQueueCount() {
|
|
350
|
+
if (this._driver.id === 0)
|
|
351
|
+
return 0;
|
|
352
|
+
return this._driver.getSendQueueCount();
|
|
353
|
+
}
|
|
354
|
+
getSendQueueSize() {
|
|
355
|
+
if (this._driver.id === 0)
|
|
356
|
+
return 0;
|
|
357
|
+
return this._driver.getSendQueueSize();
|
|
358
|
+
}
|
|
359
|
+
ref() { return this; }
|
|
360
|
+
unref() { return this; }
|
|
361
|
+
}
|
|
362
|
+
exports.Socket = Socket;
|
|
363
|
+
function createSocket(type, callback) {
|
|
364
|
+
const socket = new Socket(type);
|
|
365
|
+
if (callback) {
|
|
366
|
+
socket.on('message', callback);
|
|
367
|
+
}
|
|
368
|
+
return socket;
|
|
369
|
+
}
|
|
370
|
+
exports.default = {
|
|
371
|
+
createSocket,
|
|
372
|
+
Socket,
|
|
373
|
+
BlockList
|
|
374
|
+
};
|
|
375
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
** linguist-generated=true
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#
|
|
2
|
+
# RustCUdp+autolinking.cmake
|
|
3
|
+
# This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
# https://github.com/mrousavy/nitro
|
|
5
|
+
# Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
# This is a CMake file that adds all files generated by Nitrogen
|
|
9
|
+
# to the current CMake project.
|
|
10
|
+
#
|
|
11
|
+
# To use it, add this to your CMakeLists.txt:
|
|
12
|
+
# ```cmake
|
|
13
|
+
# include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/RustCUdp+autolinking.cmake)
|
|
14
|
+
# ```
|
|
15
|
+
|
|
16
|
+
# Define a flag to check if we are building properly
|
|
17
|
+
add_definitions(-DBUILDING_RUSTCUDP_WITH_GENERATED_CMAKE_PROJECT)
|
|
18
|
+
|
|
19
|
+
# Enable Raw Props parsing in react-native (for Nitro Views)
|
|
20
|
+
add_definitions(-DRN_SERIALIZABLE_STATE)
|
|
21
|
+
|
|
22
|
+
# Add all headers that were generated by Nitrogen
|
|
23
|
+
include_directories(
|
|
24
|
+
"../nitrogen/generated/shared/c++"
|
|
25
|
+
"../nitrogen/generated/android/c++"
|
|
26
|
+
"../nitrogen/generated/android/"
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
# Add all .cpp sources that were generated by Nitrogen
|
|
30
|
+
target_sources(
|
|
31
|
+
# CMake project name (Android C++ library name)
|
|
32
|
+
RustCUdp PRIVATE
|
|
33
|
+
# Autolinking Setup
|
|
34
|
+
../nitrogen/generated/android/RustCUdpOnLoad.cpp
|
|
35
|
+
# Shared Nitrogen C++ sources
|
|
36
|
+
../nitrogen/generated/shared/c++/HybridUdpSocketDriverSpec.cpp
|
|
37
|
+
../nitrogen/generated/shared/c++/HybridUdpDriverSpec.cpp
|
|
38
|
+
../nitrogen/generated/shared/c++/HybridNitroBufferSpec.cpp
|
|
39
|
+
# Android-specific Nitrogen C++ sources
|
|
40
|
+
../nitrogen/generated/android/c++/JHybridUdpSocketDriverSpec.cpp
|
|
41
|
+
../nitrogen/generated/android/c++/JHybridUdpDriverSpec.cpp
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
# From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake
|
|
45
|
+
# Used in node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake
|
|
46
|
+
target_compile_definitions(
|
|
47
|
+
RustCUdp PRIVATE
|
|
48
|
+
-DFOLLY_NO_CONFIG=1
|
|
49
|
+
-DFOLLY_HAVE_CLOCK_GETTIME=1
|
|
50
|
+
-DFOLLY_USE_LIBCPP=1
|
|
51
|
+
-DFOLLY_CFG_NO_COROUTINES=1
|
|
52
|
+
-DFOLLY_MOBILE=1
|
|
53
|
+
-DFOLLY_HAVE_RECVMMSG=1
|
|
54
|
+
-DFOLLY_HAVE_PTHREAD=1
|
|
55
|
+
# Once we target android-23 above, we can comment
|
|
56
|
+
# the following line. NDK uses GNU style stderror_r() after API 23.
|
|
57
|
+
-DFOLLY_HAVE_XSI_STRERROR_R=1
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
# Add all libraries required by the generated specs
|
|
61
|
+
find_package(fbjni REQUIRED) # <-- Used for communication between Java <-> C++
|
|
62
|
+
find_package(ReactAndroid REQUIRED) # <-- Used to set up React Native bindings (e.g. CallInvoker/TurboModule)
|
|
63
|
+
find_package(react-native-nitro-modules REQUIRED) # <-- Used to create all HybridObjects and use the Nitro core library
|
|
64
|
+
|
|
65
|
+
# Link all libraries together
|
|
66
|
+
target_link_libraries(
|
|
67
|
+
RustCUdp
|
|
68
|
+
fbjni::fbjni # <-- Facebook C++ JNI helpers
|
|
69
|
+
ReactAndroid::jsi # <-- RN: JSI
|
|
70
|
+
react-native-nitro-modules::NitroModules # <-- NitroModules Core :)
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Link react-native (different prefab between RN 0.75 and RN 0.76)
|
|
74
|
+
if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
|
|
75
|
+
target_link_libraries(
|
|
76
|
+
RustCUdp
|
|
77
|
+
ReactAndroid::reactnative # <-- RN: Native Modules umbrella prefab
|
|
78
|
+
)
|
|
79
|
+
else()
|
|
80
|
+
target_link_libraries(
|
|
81
|
+
RustCUdp
|
|
82
|
+
ReactAndroid::react_nativemodule_core # <-- RN: TurboModules Core
|
|
83
|
+
)
|
|
84
|
+
endif()
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// RustCUdp+autolinking.gradle
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
/// This is a Gradle file that adds all files generated by Nitrogen
|
|
9
|
+
/// to the current Gradle project.
|
|
10
|
+
///
|
|
11
|
+
/// To use it, add this to your build.gradle:
|
|
12
|
+
/// ```gradle
|
|
13
|
+
/// apply from: '../nitrogen/generated/android/RustCUdp+autolinking.gradle'
|
|
14
|
+
/// ```
|
|
15
|
+
|
|
16
|
+
logger.warn("[NitroModules] 🔥 RustCUdp is boosted by nitro!")
|
|
17
|
+
|
|
18
|
+
android {
|
|
19
|
+
sourceSets {
|
|
20
|
+
main {
|
|
21
|
+
java.srcDirs += [
|
|
22
|
+
// Nitrogen files
|
|
23
|
+
"${project.projectDir}/../nitrogen/generated/android/kotlin"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// RustCUdpOnLoad.cpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#ifndef BUILDING_RUSTCUDP_WITH_GENERATED_CMAKE_PROJECT
|
|
9
|
+
#error RustCUdpOnLoad.cpp is not being built with the autogenerated CMakeLists.txt project. Is a different CMakeLists.txt building this?
|
|
10
|
+
#endif
|
|
11
|
+
|
|
12
|
+
#include "RustCUdpOnLoad.hpp"
|
|
13
|
+
|
|
14
|
+
#include <jni.h>
|
|
15
|
+
#include <fbjni/fbjni.h>
|
|
16
|
+
#include <NitroModules/HybridObjectRegistry.hpp>
|
|
17
|
+
|
|
18
|
+
#include "JHybridUdpSocketDriverSpec.hpp"
|
|
19
|
+
#include "JFunc_void_std__shared_ptr_ArrayBuffer__std__string_double.hpp"
|
|
20
|
+
#include "JFunc_void.hpp"
|
|
21
|
+
#include "JFunc_void_std__string.hpp"
|
|
22
|
+
#include "JHybridUdpDriverSpec.hpp"
|
|
23
|
+
#include "HybridUdpDriver.hpp"
|
|
24
|
+
|
|
25
|
+
namespace margelo::nitro::udp {
|
|
26
|
+
|
|
27
|
+
int initialize(JavaVM* vm) {
|
|
28
|
+
using namespace margelo::nitro;
|
|
29
|
+
using namespace margelo::nitro::udp;
|
|
30
|
+
using namespace facebook;
|
|
31
|
+
|
|
32
|
+
return facebook::jni::initialize(vm, [] {
|
|
33
|
+
// Register native JNI methods
|
|
34
|
+
margelo::nitro::udp::JHybridUdpSocketDriverSpec::registerNatives();
|
|
35
|
+
margelo::nitro::udp::JFunc_void_std__shared_ptr_ArrayBuffer__std__string_double_cxx::registerNatives();
|
|
36
|
+
margelo::nitro::udp::JFunc_void_cxx::registerNatives();
|
|
37
|
+
margelo::nitro::udp::JFunc_void_std__string_cxx::registerNatives();
|
|
38
|
+
margelo::nitro::udp::JHybridUdpDriverSpec::registerNatives();
|
|
39
|
+
|
|
40
|
+
// Register Nitro Hybrid Objects
|
|
41
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
42
|
+
"UdpDriver",
|
|
43
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
44
|
+
static_assert(std::is_default_constructible_v<HybridUdpDriver>,
|
|
45
|
+
"The HybridObject \"HybridUdpDriver\" is not default-constructible! "
|
|
46
|
+
"Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
|
|
47
|
+
return std::make_shared<HybridUdpDriver>();
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
} // namespace margelo::nitro::udp
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// RustCUdpOnLoad.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#include <jni.h>
|
|
9
|
+
#include <NitroModules/NitroDefines.hpp>
|
|
10
|
+
|
|
11
|
+
namespace margelo::nitro::udp {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Initializes the native (C++) part of RustCUdp, and autolinks all Hybrid Objects.
|
|
15
|
+
* Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`).
|
|
16
|
+
* Example:
|
|
17
|
+
* ```cpp (cpp-adapter.cpp)
|
|
18
|
+
* JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
|
|
19
|
+
* return margelo::nitro::udp::initialize(vm);
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
int initialize(JavaVM* vm);
|
|
24
|
+
|
|
25
|
+
} // namespace margelo::nitro::udp
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JFunc_void.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include <functional>
|
|
12
|
+
|
|
13
|
+
#include <functional>
|
|
14
|
+
#include <NitroModules/JNICallable.hpp>
|
|
15
|
+
|
|
16
|
+
namespace margelo::nitro::udp {
|
|
17
|
+
|
|
18
|
+
using namespace facebook;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Represents the Java/Kotlin callback `() -> Unit`.
|
|
22
|
+
* This can be passed around between C++ and Java/Kotlin.
|
|
23
|
+
*/
|
|
24
|
+
struct JFunc_void: public jni::JavaClass<JFunc_void> {
|
|
25
|
+
public:
|
|
26
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/udp/Func_void;";
|
|
27
|
+
|
|
28
|
+
public:
|
|
29
|
+
/**
|
|
30
|
+
* Invokes the function this `JFunc_void` instance holds through JNI.
|
|
31
|
+
*/
|
|
32
|
+
void invoke() const {
|
|
33
|
+
static const auto method = javaClassStatic()->getMethod<void()>("invoke");
|
|
34
|
+
method(self());
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* An implementation of Func_void that is backed by a C++ implementation (using `std::function<...>`)
|
|
40
|
+
*/
|
|
41
|
+
class JFunc_void_cxx final: public jni::HybridClass<JFunc_void_cxx, JFunc_void> {
|
|
42
|
+
public:
|
|
43
|
+
static jni::local_ref<JFunc_void::javaobject> fromCpp(const std::function<void()>& func) {
|
|
44
|
+
return JFunc_void_cxx::newObjectCxxArgs(func);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public:
|
|
48
|
+
/**
|
|
49
|
+
* Invokes the C++ `std::function<...>` this `JFunc_void_cxx` instance holds.
|
|
50
|
+
*/
|
|
51
|
+
void invoke_cxx() {
|
|
52
|
+
_func();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public:
|
|
56
|
+
[[nodiscard]]
|
|
57
|
+
inline const std::function<void()>& getFunction() const {
|
|
58
|
+
return _func;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public:
|
|
62
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/udp/Func_void_cxx;";
|
|
63
|
+
static void registerNatives() {
|
|
64
|
+
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_cxx::invoke_cxx)});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private:
|
|
68
|
+
explicit JFunc_void_cxx(const std::function<void()>& func): _func(func) { }
|
|
69
|
+
|
|
70
|
+
private:
|
|
71
|
+
friend HybridBase;
|
|
72
|
+
std::function<void()> _func;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
} // namespace margelo::nitro::udp
|