react-native-nitro-net 0.2.0 → 0.3.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/README.md +70 -12
- package/android/libs/arm64-v8a/librust_c_net.so +0 -0
- package/android/libs/armeabi-v7a/librust_c_net.so +0 -0
- package/android/libs/x86/librust_c_net.so +0 -0
- package/android/libs/x86_64/librust_c_net.so +0 -0
- package/cpp/HybridHttpParser.hpp +67 -0
- package/cpp/HybridNetDriver.hpp +6 -0
- package/cpp/HybridNetServerDriver.hpp +7 -0
- package/cpp/HybridNetSocketDriver.hpp +27 -0
- package/cpp/NetBindings.hpp +15 -0
- package/ios/Frameworks/RustCNet.xcframework/Info.plist +5 -5
- package/ios/Frameworks/RustCNet.xcframework/ios-arm64/RustCNet.framework/RustCNet +0 -0
- package/ios/Frameworks/RustCNet.xcframework/ios-arm64_x86_64-simulator/RustCNet.framework/RustCNet +0 -0
- package/lib/Net.nitro.d.ts +19 -0
- package/lib/http.d.ts +203 -0
- package/lib/http.js +1138 -0
- package/lib/https.d.ts +24 -0
- package/lib/https.js +144 -0
- package/lib/index.d.ts +46 -8
- package/lib/index.js +133 -26
- package/lib/tls.d.ts +21 -0
- package/lib/tls.js +74 -4
- package/nitrogen/generated/android/RustCNet+autolinking.cmake +2 -0
- package/nitrogen/generated/android/RustCNetOnLoad.cpp +2 -0
- package/nitrogen/generated/android/c++/JHybridHttpParserSpec.cpp +54 -0
- package/nitrogen/generated/android/c++/JHybridHttpParserSpec.hpp +65 -0
- package/nitrogen/generated/android/c++/JHybridNetDriverSpec.cpp +9 -0
- package/nitrogen/generated/android/c++/JHybridNetDriverSpec.hpp +1 -0
- package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.cpp +4 -0
- package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.hpp +1 -0
- package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.cpp +9 -0
- package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.hpp +2 -0
- package/nitrogen/generated/android/c++/JNetConfig.hpp +7 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridHttpParserSpec.kt +58 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetDriverSpec.kt +4 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetServerDriverSpec.kt +4 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetSocketDriverSpec.kt +8 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/NetConfig.kt +6 -3
- package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.cpp +17 -0
- package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.hpp +26 -0
- package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Umbrella.hpp +5 -0
- package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.hpp +79 -0
- package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.hpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.hpp +6 -0
- package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.hpp +14 -0
- package/nitrogen/generated/ios/swift/HybridHttpParserSpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridHttpParserSpec_cxx.swift +131 -0
- package/nitrogen/generated/ios/swift/HybridNetDriverSpec.swift +1 -0
- package/nitrogen/generated/ios/swift/HybridNetDriverSpec_cxx.swift +15 -0
- package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec.swift +1 -0
- package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec_cxx.swift +11 -0
- package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec.swift +2 -0
- package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec_cxx.swift +36 -0
- package/nitrogen/generated/ios/swift/NetConfig.swift +19 -1
- package/nitrogen/generated/shared/c++/HybridHttpParserSpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridHttpParserSpec.hpp +63 -0
- package/nitrogen/generated/shared/c++/HybridNetDriverSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridNetDriverSpec.hpp +4 -0
- package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.hpp +1 -0
- package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.hpp +2 -0
- package/nitrogen/generated/shared/c++/NetConfig.hpp +6 -2
- package/package.json +3 -3
- package/src/Net.nitro.ts +17 -0
- package/src/http.ts +1304 -0
- package/src/https.ts +127 -0
- package/src/index.ts +149 -18
- package/src/tls.ts +82 -6
package/lib/tls.js
CHANGED
|
@@ -11,6 +11,12 @@ exports.parseCertString = parseCertString;
|
|
|
11
11
|
exports.convertTLSV1CertToPEM = convertTLSV1CertToPEM;
|
|
12
12
|
const index_1 = require("./index");
|
|
13
13
|
const Driver_1 = require("./Driver");
|
|
14
|
+
function debugLog(message) {
|
|
15
|
+
if ((0, index_1.isVerbose)()) {
|
|
16
|
+
const timestamp = new Date().toISOString().split('T')[1].split('Z')[0];
|
|
17
|
+
console.log(`[NET DEBUG ${timestamp}] ${message}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
14
20
|
exports.DEFAULT_MIN_VERSION = 'TLSv1.2';
|
|
15
21
|
exports.DEFAULT_MAX_VERSION = 'TLSv1.3';
|
|
16
22
|
exports.rootCertificates = [];
|
|
@@ -131,13 +137,48 @@ class TLSSocket extends index_1.Socket {
|
|
|
131
137
|
}
|
|
132
138
|
renegotiate(options, callback) {
|
|
133
139
|
if (callback) {
|
|
134
|
-
|
|
140
|
+
setTimeout(() => {
|
|
141
|
+
const err = new Error('Renegotiation is not supported by rustls');
|
|
142
|
+
err.code = 'ERR_TLS_RENEGOTIATION_DISABLED';
|
|
143
|
+
callback(err);
|
|
144
|
+
}, 0);
|
|
135
145
|
}
|
|
136
146
|
return false;
|
|
137
147
|
}
|
|
138
148
|
disableRenegotiation() {
|
|
139
149
|
// No-op, already effectively disabled
|
|
140
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Enables trace output for this socket.
|
|
153
|
+
*/
|
|
154
|
+
enableTrace() {
|
|
155
|
+
const driver = this._driver;
|
|
156
|
+
if (driver) {
|
|
157
|
+
driver.enableTrace();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Exports keying material for use by external protocols.
|
|
162
|
+
*
|
|
163
|
+
* @param length The number of bytes to return.
|
|
164
|
+
* @param label A label identifying the keying material.
|
|
165
|
+
* @param context An optional context.
|
|
166
|
+
* @returns Buffer containing keying material.
|
|
167
|
+
* @throws Error if export fails (e.g., TLS not connected).
|
|
168
|
+
*/
|
|
169
|
+
exportKeyingMaterial(length, label, context) {
|
|
170
|
+
const driver = this._driver;
|
|
171
|
+
if (driver) {
|
|
172
|
+
const ctx = context ? new Uint8Array(context).buffer : undefined;
|
|
173
|
+
const result = driver.exportKeyingMaterial(length, label, ctx);
|
|
174
|
+
if (result) {
|
|
175
|
+
return Buffer.from(result);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const err = new Error('exportKeyingMaterial failed: TLS connection may not be established');
|
|
179
|
+
err.code = 'ERR_TLS_EXPORT_KEYING_MATERIAL';
|
|
180
|
+
throw err;
|
|
181
|
+
}
|
|
141
182
|
constructor(socketOrOptions, options) {
|
|
142
183
|
let opts = {};
|
|
143
184
|
if (socketOrOptions instanceof index_1.Socket) {
|
|
@@ -174,6 +215,21 @@ class TLSSocket extends index_1.Socket {
|
|
|
174
215
|
if (connectionListener)
|
|
175
216
|
this.once('secureConnect', connectionListener);
|
|
176
217
|
this.once('connect', () => {
|
|
218
|
+
// After the native TLS handshake, perform hostname verification
|
|
219
|
+
if (rejectUnauthorized !== false) {
|
|
220
|
+
const cert = this.getPeerCertificate();
|
|
221
|
+
if (cert && Object.keys(cert).length > 0) {
|
|
222
|
+
const verifyFn = (typeof options === 'object' && options.checkServerIdentity)
|
|
223
|
+
? options.checkServerIdentity
|
|
224
|
+
: checkServerIdentity;
|
|
225
|
+
const verifyErr = verifyFn(servername, cert);
|
|
226
|
+
if (verifyErr) {
|
|
227
|
+
this.emit('error', verifyErr);
|
|
228
|
+
this.destroy(verifyErr);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
177
233
|
this.emit('secureConnect');
|
|
178
234
|
});
|
|
179
235
|
if (session) {
|
|
@@ -194,17 +250,21 @@ class TLSSocket extends index_1.Socket {
|
|
|
194
250
|
}
|
|
195
251
|
if (path) {
|
|
196
252
|
if (secureContextId !== undefined) {
|
|
253
|
+
debugLog(`TLSSocket.connect: Calling driver.connectUnixTLSWithContext(${path}, ${servername}, ctx=${secureContextId})`);
|
|
197
254
|
driver.connectUnixTLSWithContext(path, servername, rejectUnauthorized, secureContextId);
|
|
198
255
|
}
|
|
199
256
|
else {
|
|
257
|
+
debugLog(`TLSSocket.connect: Calling driver.connectUnixTLS(${path}, ${servername})`);
|
|
200
258
|
driver.connectUnixTLS(path, servername, rejectUnauthorized);
|
|
201
259
|
}
|
|
202
260
|
}
|
|
203
261
|
else {
|
|
204
262
|
if (secureContextId !== undefined) {
|
|
263
|
+
debugLog(`TLSSocket.connect: Calling driver.connectTLSWithContext(${host}, ${port}, ${servername}, ctx=${secureContextId})`);
|
|
205
264
|
driver.connectTLSWithContext(host, port, servername, rejectUnauthorized, secureContextId);
|
|
206
265
|
}
|
|
207
266
|
else {
|
|
267
|
+
debugLog(`TLSSocket.connect: Calling driver.connectTLS(${host}, ${port}, ${servername})`);
|
|
208
268
|
driver.connectTLS(host, port, servername, rejectUnauthorized);
|
|
209
269
|
}
|
|
210
270
|
}
|
|
@@ -261,6 +321,10 @@ class Server extends index_1.Server {
|
|
|
261
321
|
ca: options.ca
|
|
262
322
|
}).id;
|
|
263
323
|
}
|
|
324
|
+
else {
|
|
325
|
+
// Create empty secure context to allow late configuration (addContext)
|
|
326
|
+
this._secureContextId = createSecureContext().id;
|
|
327
|
+
}
|
|
264
328
|
this.on('connection', (socket) => {
|
|
265
329
|
const tlsSocket = new TLSSocket(socket);
|
|
266
330
|
this.emit('secureConnection', tlsSocket);
|
|
@@ -338,10 +402,16 @@ class Server extends index_1.Server {
|
|
|
338
402
|
if (_callback)
|
|
339
403
|
this.once('listening', _callback);
|
|
340
404
|
const driver = this._driver;
|
|
341
|
-
if (
|
|
342
|
-
|
|
405
|
+
if (_path) {
|
|
406
|
+
driver.listenTLSUnix(_path, this._secureContextId, _backlog);
|
|
407
|
+
}
|
|
408
|
+
else if (handle) {
|
|
409
|
+
console.warn("TLS over handles not fully implemented yet");
|
|
410
|
+
driver.listenTLS(_port || 0, this._secureContextId, _backlog, ipv6Only, reusePort);
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
driver.listenTLS(_port || 0, this._secureContextId, _backlog, ipv6Only, reusePort);
|
|
343
414
|
}
|
|
344
|
-
driver.listenTLS(_port || 0, this._secureContextId, _backlog, ipv6Only, reusePort);
|
|
345
415
|
return this;
|
|
346
416
|
}
|
|
347
417
|
}
|
|
@@ -35,11 +35,13 @@ target_sources(
|
|
|
35
35
|
# Shared Nitrogen C++ sources
|
|
36
36
|
../nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.cpp
|
|
37
37
|
../nitrogen/generated/shared/c++/HybridNetServerDriverSpec.cpp
|
|
38
|
+
../nitrogen/generated/shared/c++/HybridHttpParserSpec.cpp
|
|
38
39
|
../nitrogen/generated/shared/c++/HybridNetDriverSpec.cpp
|
|
39
40
|
../nitrogen/generated/shared/c++/HybridNitroBufferSpec.cpp
|
|
40
41
|
# Android-specific Nitrogen C++ sources
|
|
41
42
|
../nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.cpp
|
|
42
43
|
../nitrogen/generated/android/c++/JHybridNetServerDriverSpec.cpp
|
|
44
|
+
../nitrogen/generated/android/c++/JHybridHttpParserSpec.cpp
|
|
43
45
|
../nitrogen/generated/android/c++/JHybridNetDriverSpec.cpp
|
|
44
46
|
)
|
|
45
47
|
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#include "JHybridNetSocketDriverSpec.hpp"
|
|
19
19
|
#include "JFunc_void_double_std__shared_ptr_ArrayBuffer_.hpp"
|
|
20
20
|
#include "JHybridNetServerDriverSpec.hpp"
|
|
21
|
+
#include "JHybridHttpParserSpec.hpp"
|
|
21
22
|
#include "JHybridNetDriverSpec.hpp"
|
|
22
23
|
#include "HybridNetDriver.hpp"
|
|
23
24
|
|
|
@@ -33,6 +34,7 @@ int initialize(JavaVM* vm) {
|
|
|
33
34
|
margelo::nitro::net::JHybridNetSocketDriverSpec::registerNatives();
|
|
34
35
|
margelo::nitro::net::JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::registerNatives();
|
|
35
36
|
margelo::nitro::net::JHybridNetServerDriverSpec::registerNatives();
|
|
37
|
+
margelo::nitro::net::JHybridHttpParserSpec::registerNatives();
|
|
36
38
|
margelo::nitro::net::JHybridNetDriverSpec::registerNatives();
|
|
37
39
|
|
|
38
40
|
// Register Nitro Hybrid Objects
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JHybridHttpParserSpec.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
|
+
#include "JHybridHttpParserSpec.hpp"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
#include <string>
|
|
13
|
+
#include <NitroModules/ArrayBuffer.hpp>
|
|
14
|
+
#include <NitroModules/JArrayBuffer.hpp>
|
|
15
|
+
|
|
16
|
+
namespace margelo::nitro::net {
|
|
17
|
+
|
|
18
|
+
jni::local_ref<JHybridHttpParserSpec::jhybriddata> JHybridHttpParserSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
|
|
19
|
+
return makeCxxInstance(jThis);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
void JHybridHttpParserSpec::registerNatives() {
|
|
23
|
+
registerHybrid({
|
|
24
|
+
makeNativeMethod("initHybrid", JHybridHttpParserSpec::initHybrid),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
size_t JHybridHttpParserSpec::getExternalMemorySize() noexcept {
|
|
29
|
+
static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
|
|
30
|
+
return method(_javaPart);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
void JHybridHttpParserSpec::dispose() noexcept {
|
|
34
|
+
static const auto method = javaClassStatic()->getMethod<void()>("dispose");
|
|
35
|
+
method(_javaPart);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
std::string JHybridHttpParserSpec::toString() {
|
|
39
|
+
static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
|
|
40
|
+
auto javaString = method(_javaPart);
|
|
41
|
+
return javaString->toStdString();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Properties
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
// Methods
|
|
48
|
+
std::string JHybridHttpParserSpec::feed(const std::shared_ptr<ArrayBuffer>& data) {
|
|
49
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>(jni::alias_ref<JArrayBuffer::javaobject> /* data */)>("feed");
|
|
50
|
+
auto __result = method(_javaPart, JArrayBuffer::wrap(data));
|
|
51
|
+
return __result->toStdString();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
} // namespace margelo::nitro::net
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridHttpParserSpec.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 <NitroModules/JHybridObject.hpp>
|
|
11
|
+
#include <fbjni/fbjni.h>
|
|
12
|
+
#include "HybridHttpParserSpec.hpp"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
namespace margelo::nitro::net {
|
|
18
|
+
|
|
19
|
+
using namespace facebook;
|
|
20
|
+
|
|
21
|
+
class JHybridHttpParserSpec: public jni::HybridClass<JHybridHttpParserSpec, JHybridObject>,
|
|
22
|
+
public virtual HybridHttpParserSpec {
|
|
23
|
+
public:
|
|
24
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridHttpParserSpec;";
|
|
25
|
+
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
|
|
26
|
+
static void registerNatives();
|
|
27
|
+
|
|
28
|
+
protected:
|
|
29
|
+
// C++ constructor (called from Java via `initHybrid()`)
|
|
30
|
+
explicit JHybridHttpParserSpec(jni::alias_ref<jhybridobject> jThis) :
|
|
31
|
+
HybridObject(HybridHttpParserSpec::TAG),
|
|
32
|
+
HybridBase(jThis),
|
|
33
|
+
_javaPart(jni::make_global(jThis)) {}
|
|
34
|
+
|
|
35
|
+
public:
|
|
36
|
+
~JHybridHttpParserSpec() override {
|
|
37
|
+
// Hermes GC can destroy JS objects on a non-JNI Thread.
|
|
38
|
+
jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public:
|
|
42
|
+
size_t getExternalMemorySize() noexcept override;
|
|
43
|
+
void dispose() noexcept override;
|
|
44
|
+
std::string toString() override;
|
|
45
|
+
|
|
46
|
+
public:
|
|
47
|
+
inline const jni::global_ref<JHybridHttpParserSpec::javaobject>& getJavaPart() const noexcept {
|
|
48
|
+
return _javaPart;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public:
|
|
52
|
+
// Properties
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
public:
|
|
56
|
+
// Methods
|
|
57
|
+
std::string feed(const std::shared_ptr<ArrayBuffer>& data) override;
|
|
58
|
+
|
|
59
|
+
private:
|
|
60
|
+
friend HybridBase;
|
|
61
|
+
using HybridBase::HybridBase;
|
|
62
|
+
jni::global_ref<JHybridHttpParserSpec::javaobject> _javaPart;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
} // namespace margelo::nitro::net
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
namespace margelo::nitro::net { class HybridNetSocketDriverSpec; }
|
|
12
12
|
// Forward declaration of `HybridNetServerDriverSpec` to properly resolve imports.
|
|
13
13
|
namespace margelo::nitro::net { class HybridNetServerDriverSpec; }
|
|
14
|
+
// Forward declaration of `HybridHttpParserSpec` to properly resolve imports.
|
|
15
|
+
namespace margelo::nitro::net { class HybridHttpParserSpec; }
|
|
14
16
|
// Forward declaration of `NetConfig` to properly resolve imports.
|
|
15
17
|
namespace margelo::nitro::net { struct NetConfig; }
|
|
16
18
|
|
|
@@ -19,6 +21,8 @@ namespace margelo::nitro::net { struct NetConfig; }
|
|
|
19
21
|
#include "JHybridNetSocketDriverSpec.hpp"
|
|
20
22
|
#include "HybridNetServerDriverSpec.hpp"
|
|
21
23
|
#include "JHybridNetServerDriverSpec.hpp"
|
|
24
|
+
#include "HybridHttpParserSpec.hpp"
|
|
25
|
+
#include "JHybridHttpParserSpec.hpp"
|
|
22
26
|
#include <NitroModules/ArrayBuffer.hpp>
|
|
23
27
|
#include <optional>
|
|
24
28
|
#include <NitroModules/JArrayBuffer.hpp>
|
|
@@ -68,6 +72,11 @@ namespace margelo::nitro::net {
|
|
|
68
72
|
auto __result = method(_javaPart);
|
|
69
73
|
return __result->cthis()->shared_cast<JHybridNetServerDriverSpec>();
|
|
70
74
|
}
|
|
75
|
+
std::shared_ptr<HybridHttpParserSpec> JHybridNetDriverSpec::createHttpParser(double mode) {
|
|
76
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridHttpParserSpec::javaobject>(double /* mode */)>("createHttpParser");
|
|
77
|
+
auto __result = method(_javaPart, mode);
|
|
78
|
+
return __result->cthis()->shared_cast<JHybridHttpParserSpec>();
|
|
79
|
+
}
|
|
71
80
|
double JHybridNetDriverSpec::createSecureContext(const std::string& cert, const std::string& key, const std::optional<std::string>& passphrase) {
|
|
72
81
|
static const auto method = javaClassStatic()->getMethod<double(jni::alias_ref<jni::JString> /* cert */, jni::alias_ref<jni::JString> /* key */, jni::alias_ref<jni::JString> /* passphrase */)>("createSecureContext");
|
|
73
82
|
auto __result = method(_javaPart, jni::make_jstring(cert), jni::make_jstring(key), passphrase.has_value() ? jni::make_jstring(passphrase.value()) : nullptr);
|
|
@@ -56,6 +56,7 @@ namespace margelo::nitro::net {
|
|
|
56
56
|
// Methods
|
|
57
57
|
std::shared_ptr<HybridNetSocketDriverSpec> createSocket(const std::optional<std::string>& id) override;
|
|
58
58
|
std::shared_ptr<HybridNetServerDriverSpec> createServer() override;
|
|
59
|
+
std::shared_ptr<HybridHttpParserSpec> createHttpParser(double mode) override;
|
|
59
60
|
double createSecureContext(const std::string& cert, const std::string& key, const std::optional<std::string>& passphrase) override;
|
|
60
61
|
double createEmptySecureContext() override;
|
|
61
62
|
void addCACertToSecureContext(double scId, const std::string& ca) override;
|
|
@@ -86,6 +86,10 @@ namespace margelo::nitro::net {
|
|
|
86
86
|
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, jni::alias_ref<jni::JDouble> /* backlog */)>("listenUnix");
|
|
87
87
|
method(_javaPart, jni::make_jstring(path), backlog.has_value() ? jni::JDouble::valueOf(backlog.value()) : nullptr);
|
|
88
88
|
}
|
|
89
|
+
void JHybridNetServerDriverSpec::listenTLSUnix(const std::string& path, double secureContextId, std::optional<double> backlog) {
|
|
90
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, double /* secureContextId */, jni::alias_ref<jni::JDouble> /* backlog */)>("listenTLSUnix");
|
|
91
|
+
method(_javaPart, jni::make_jstring(path), secureContextId, backlog.has_value() ? jni::JDouble::valueOf(backlog.value()) : nullptr);
|
|
92
|
+
}
|
|
89
93
|
void JHybridNetServerDriverSpec::listenHandle(double fd, std::optional<double> backlog) {
|
|
90
94
|
static const auto method = javaClassStatic()->getMethod<void(double /* fd */, jni::alias_ref<jni::JDouble> /* backlog */)>("listenHandle");
|
|
91
95
|
method(_javaPart, fd, backlog.has_value() ? jni::JDouble::valueOf(backlog.value()) : nullptr);
|
|
@@ -60,6 +60,7 @@ namespace margelo::nitro::net {
|
|
|
60
60
|
void listen(double port, std::optional<double> backlog, std::optional<bool> ipv6Only, std::optional<bool> reusePort) override;
|
|
61
61
|
void listenTLS(double port, double secureContextId, std::optional<double> backlog, std::optional<bool> ipv6Only, std::optional<bool> reusePort) override;
|
|
62
62
|
void listenUnix(const std::string& path, std::optional<double> backlog) override;
|
|
63
|
+
void listenTLSUnix(const std::string& path, double secureContextId, std::optional<double> backlog) override;
|
|
63
64
|
void listenHandle(double fd, std::optional<double> backlog) override;
|
|
64
65
|
std::string getLocalAddress() override;
|
|
65
66
|
void close() override;
|
|
@@ -175,6 +175,15 @@ namespace margelo::nitro::net {
|
|
|
175
175
|
static const auto method = javaClassStatic()->getMethod<void()>("enableKeylog");
|
|
176
176
|
method(_javaPart);
|
|
177
177
|
}
|
|
178
|
+
void JHybridNetSocketDriverSpec::enableTrace() {
|
|
179
|
+
static const auto method = javaClassStatic()->getMethod<void()>("enableTrace");
|
|
180
|
+
method(_javaPart);
|
|
181
|
+
}
|
|
182
|
+
std::optional<std::shared_ptr<ArrayBuffer>> JHybridNetSocketDriverSpec::exportKeyingMaterial(double length, const std::string& label, const std::optional<std::shared_ptr<ArrayBuffer>>& context) {
|
|
183
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JArrayBuffer::javaobject>(double /* length */, jni::alias_ref<jni::JString> /* label */, jni::alias_ref<JArrayBuffer::javaobject> /* context */)>("exportKeyingMaterial");
|
|
184
|
+
auto __result = method(_javaPart, length, jni::make_jstring(label), context.has_value() ? JArrayBuffer::wrap(context.value()) : nullptr);
|
|
185
|
+
return __result != nullptr ? std::make_optional(__result->cthis()->getArrayBuffer()) : std::nullopt;
|
|
186
|
+
}
|
|
178
187
|
void JHybridNetSocketDriverSpec::setNoDelay(bool enable) {
|
|
179
188
|
static const auto method = javaClassStatic()->getMethod<void(jboolean /* enable */)>("setNoDelay");
|
|
180
189
|
method(_javaPart, enable);
|
|
@@ -80,6 +80,8 @@ namespace margelo::nitro::net {
|
|
|
80
80
|
void destroy() override;
|
|
81
81
|
void resetAndDestroy() override;
|
|
82
82
|
void enableKeylog() override;
|
|
83
|
+
void enableTrace() override;
|
|
84
|
+
std::optional<std::shared_ptr<ArrayBuffer>> exportKeyingMaterial(double length, const std::string& label, const std::optional<std::shared_ptr<ArrayBuffer>>& context) override;
|
|
83
85
|
void setNoDelay(bool enable) override;
|
|
84
86
|
void setKeepAlive(bool enable, double delay) override;
|
|
85
87
|
std::string getLocalAddress() override;
|
|
@@ -33,8 +33,11 @@ namespace margelo::nitro::net {
|
|
|
33
33
|
static const auto clazz = javaClassStatic();
|
|
34
34
|
static const auto fieldWorkerThreads = clazz->getField<jni::JDouble>("workerThreads");
|
|
35
35
|
jni::local_ref<jni::JDouble> workerThreads = this->getFieldValue(fieldWorkerThreads);
|
|
36
|
+
static const auto fieldDebug = clazz->getField<jni::JBoolean>("debug");
|
|
37
|
+
jni::local_ref<jni::JBoolean> debug = this->getFieldValue(fieldDebug);
|
|
36
38
|
return NetConfig(
|
|
37
|
-
workerThreads != nullptr ? std::make_optional(workerThreads->value()) : std::nullopt
|
|
39
|
+
workerThreads != nullptr ? std::make_optional(workerThreads->value()) : std::nullopt,
|
|
40
|
+
debug != nullptr ? std::make_optional(static_cast<bool>(debug->value())) : std::nullopt
|
|
38
41
|
);
|
|
39
42
|
}
|
|
40
43
|
|
|
@@ -44,12 +47,13 @@ namespace margelo::nitro::net {
|
|
|
44
47
|
*/
|
|
45
48
|
[[maybe_unused]]
|
|
46
49
|
static jni::local_ref<JNetConfig::javaobject> fromCpp(const NetConfig& value) {
|
|
47
|
-
using JSignature = JNetConfig(jni::alias_ref<jni::JDouble>);
|
|
50
|
+
using JSignature = JNetConfig(jni::alias_ref<jni::JDouble>, jni::alias_ref<jni::JBoolean>);
|
|
48
51
|
static const auto clazz = javaClassStatic();
|
|
49
52
|
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
50
53
|
return create(
|
|
51
54
|
clazz,
|
|
52
|
-
value.workerThreads.has_value() ? jni::JDouble::valueOf(value.workerThreads.value()) : nullptr
|
|
55
|
+
value.workerThreads.has_value() ? jni::JDouble::valueOf(value.workerThreads.value()) : nullptr,
|
|
56
|
+
value.debug.has_value() ? jni::JBoolean::valueOf(value.debug.value()) : nullptr
|
|
53
57
|
);
|
|
54
58
|
}
|
|
55
59
|
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridHttpParserSpec.kt
|
|
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
|
+
package com.margelo.nitro.net
|
|
9
|
+
|
|
10
|
+
import androidx.annotation.Keep
|
|
11
|
+
import com.facebook.jni.HybridData
|
|
12
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
13
|
+
import com.margelo.nitro.core.ArrayBuffer
|
|
14
|
+
import com.margelo.nitro.core.HybridObject
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A Kotlin class representing the HttpParser HybridObject.
|
|
18
|
+
* Implement this abstract class to create Kotlin-based instances of HttpParser.
|
|
19
|
+
*/
|
|
20
|
+
@DoNotStrip
|
|
21
|
+
@Keep
|
|
22
|
+
@Suppress(
|
|
23
|
+
"KotlinJniMissingFunction", "unused",
|
|
24
|
+
"RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet",
|
|
25
|
+
"LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
|
|
26
|
+
)
|
|
27
|
+
abstract class HybridHttpParserSpec: HybridObject() {
|
|
28
|
+
@DoNotStrip
|
|
29
|
+
private var mHybridData: HybridData = initHybrid()
|
|
30
|
+
|
|
31
|
+
init {
|
|
32
|
+
super.updateNative(mHybridData)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
override fun updateNative(hybridData: HybridData) {
|
|
36
|
+
mHybridData = hybridData
|
|
37
|
+
super.updateNative(hybridData)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Default implementation of `HybridObject.toString()`
|
|
41
|
+
override fun toString(): String {
|
|
42
|
+
return "[HybridObject HttpParser]"
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Properties
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
// Methods
|
|
49
|
+
@DoNotStrip
|
|
50
|
+
@Keep
|
|
51
|
+
abstract fun feed(data: ArrayBuffer): String
|
|
52
|
+
|
|
53
|
+
private external fun initHybrid(): HybridData
|
|
54
|
+
|
|
55
|
+
companion object {
|
|
56
|
+
protected const val TAG = "HybridHttpParserSpec"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -54,6 +54,10 @@ abstract class HybridNetDriverSpec: HybridObject() {
|
|
|
54
54
|
@Keep
|
|
55
55
|
abstract fun createServer(): HybridNetServerDriverSpec
|
|
56
56
|
|
|
57
|
+
@DoNotStrip
|
|
58
|
+
@Keep
|
|
59
|
+
abstract fun createHttpParser(mode: Double): HybridHttpParserSpec
|
|
60
|
+
|
|
57
61
|
@DoNotStrip
|
|
58
62
|
@Keep
|
|
59
63
|
abstract fun createSecureContext(cert: String, key: String, passphrase: String?): Double
|
package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetServerDriverSpec.kt
CHANGED
|
@@ -76,6 +76,10 @@ abstract class HybridNetServerDriverSpec: HybridObject() {
|
|
|
76
76
|
@Keep
|
|
77
77
|
abstract fun listenUnix(path: String, backlog: Double?): Unit
|
|
78
78
|
|
|
79
|
+
@DoNotStrip
|
|
80
|
+
@Keep
|
|
81
|
+
abstract fun listenTLSUnix(path: String, secureContextId: Double, backlog: Double?): Unit
|
|
82
|
+
|
|
79
83
|
@DoNotStrip
|
|
80
84
|
@Keep
|
|
81
85
|
abstract fun listenHandle(fd: Double, backlog: Double?): Unit
|
package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetSocketDriverSpec.kt
CHANGED
|
@@ -158,6 +158,14 @@ abstract class HybridNetSocketDriverSpec: HybridObject() {
|
|
|
158
158
|
@Keep
|
|
159
159
|
abstract fun enableKeylog(): Unit
|
|
160
160
|
|
|
161
|
+
@DoNotStrip
|
|
162
|
+
@Keep
|
|
163
|
+
abstract fun enableTrace(): Unit
|
|
164
|
+
|
|
165
|
+
@DoNotStrip
|
|
166
|
+
@Keep
|
|
167
|
+
abstract fun exportKeyingMaterial(length: Double, label: String, context: ArrayBuffer?): ArrayBuffer?
|
|
168
|
+
|
|
161
169
|
@DoNotStrip
|
|
162
170
|
@Keep
|
|
163
171
|
abstract fun setNoDelay(enable: Boolean): Unit
|
|
@@ -19,7 +19,10 @@ import com.facebook.proguard.annotations.DoNotStrip
|
|
|
19
19
|
data class NetConfig(
|
|
20
20
|
@DoNotStrip
|
|
21
21
|
@Keep
|
|
22
|
-
val workerThreads: Double
|
|
22
|
+
val workerThreads: Double?,
|
|
23
|
+
@DoNotStrip
|
|
24
|
+
@Keep
|
|
25
|
+
val debug: Boolean?
|
|
23
26
|
) {
|
|
24
27
|
/* primary constructor */
|
|
25
28
|
|
|
@@ -31,8 +34,8 @@ data class NetConfig(
|
|
|
31
34
|
@Keep
|
|
32
35
|
@Suppress("unused")
|
|
33
36
|
@JvmStatic
|
|
34
|
-
private fun fromCpp(workerThreads: Double?): NetConfig {
|
|
35
|
-
return NetConfig(workerThreads)
|
|
37
|
+
private fun fromCpp(workerThreads: Double?, debug: Boolean?): NetConfig {
|
|
38
|
+
return NetConfig(workerThreads, debug)
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
#include "RustCNet-Swift-Cxx-Bridge.hpp"
|
|
9
9
|
|
|
10
10
|
// Include C++ implementation defined types
|
|
11
|
+
#include "HybridHttpParserSpecSwift.hpp"
|
|
11
12
|
#include "HybridNetDriverSpecSwift.hpp"
|
|
12
13
|
#include "HybridNetServerDriverSpecSwift.hpp"
|
|
13
14
|
#include "HybridNetSocketDriverSpecSwift.hpp"
|
|
@@ -56,6 +57,22 @@ namespace margelo::nitro::net::bridge::swift {
|
|
|
56
57
|
return swiftPart.toUnsafe();
|
|
57
58
|
}
|
|
58
59
|
|
|
60
|
+
// pragma MARK: std::shared_ptr<HybridHttpParserSpec>
|
|
61
|
+
std::shared_ptr<HybridHttpParserSpec> create_std__shared_ptr_HybridHttpParserSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
|
|
62
|
+
RustCNet::HybridHttpParserSpec_cxx swiftPart = RustCNet::HybridHttpParserSpec_cxx::fromUnsafe(swiftUnsafePointer);
|
|
63
|
+
return std::make_shared<margelo::nitro::net::HybridHttpParserSpecSwift>(swiftPart);
|
|
64
|
+
}
|
|
65
|
+
void* NON_NULL get_std__shared_ptr_HybridHttpParserSpec_(std__shared_ptr_HybridHttpParserSpec_ cppType) {
|
|
66
|
+
std::shared_ptr<margelo::nitro::net::HybridHttpParserSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::net::HybridHttpParserSpecSwift>(cppType);
|
|
67
|
+
#ifdef NITRO_DEBUG
|
|
68
|
+
if (swiftWrapper == nullptr) [[unlikely]] {
|
|
69
|
+
throw std::runtime_error("Class \"HybridHttpParserSpec\" is not implemented in Swift!");
|
|
70
|
+
}
|
|
71
|
+
#endif
|
|
72
|
+
RustCNet::HybridHttpParserSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
|
|
73
|
+
return swiftPart.toUnsafe();
|
|
74
|
+
}
|
|
75
|
+
|
|
59
76
|
// pragma MARK: std::shared_ptr<HybridNetDriverSpec>
|
|
60
77
|
std::shared_ptr<HybridNetDriverSpec> create_std__shared_ptr_HybridNetDriverSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
|
|
61
78
|
RustCNet::HybridNetDriverSpec_cxx swiftPart = RustCNet::HybridNetDriverSpec_cxx::fromUnsafe(swiftUnsafePointer);
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
// Forward declarations of C++ defined types
|
|
11
11
|
// Forward declaration of `ArrayBufferHolder` to properly resolve imports.
|
|
12
12
|
namespace NitroModules { class ArrayBufferHolder; }
|
|
13
|
+
// Forward declaration of `HybridHttpParserSpec` to properly resolve imports.
|
|
14
|
+
namespace margelo::nitro::net { class HybridHttpParserSpec; }
|
|
13
15
|
// Forward declaration of `HybridNetDriverSpec` to properly resolve imports.
|
|
14
16
|
namespace margelo::nitro::net { class HybridNetDriverSpec; }
|
|
15
17
|
// Forward declaration of `HybridNetServerDriverSpec` to properly resolve imports.
|
|
@@ -18,6 +20,8 @@ namespace margelo::nitro::net { class HybridNetServerDriverSpec; }
|
|
|
18
20
|
namespace margelo::nitro::net { class HybridNetSocketDriverSpec; }
|
|
19
21
|
|
|
20
22
|
// Forward declarations of Swift defined types
|
|
23
|
+
// Forward declaration of `HybridHttpParserSpec_cxx` to properly resolve imports.
|
|
24
|
+
namespace RustCNet { class HybridHttpParserSpec_cxx; }
|
|
21
25
|
// Forward declaration of `HybridNetDriverSpec_cxx` to properly resolve imports.
|
|
22
26
|
namespace RustCNet { class HybridNetDriverSpec_cxx; }
|
|
23
27
|
// Forward declaration of `HybridNetServerDriverSpec_cxx` to properly resolve imports.
|
|
@@ -26,6 +30,7 @@ namespace RustCNet { class HybridNetServerDriverSpec_cxx; }
|
|
|
26
30
|
namespace RustCNet { class HybridNetSocketDriverSpec_cxx; }
|
|
27
31
|
|
|
28
32
|
// Include C++ defined types
|
|
33
|
+
#include "HybridHttpParserSpec.hpp"
|
|
29
34
|
#include "HybridNetDriverSpec.hpp"
|
|
30
35
|
#include "HybridNetServerDriverSpec.hpp"
|
|
31
36
|
#include "HybridNetSocketDriverSpec.hpp"
|
|
@@ -195,6 +200,18 @@ namespace margelo::nitro::net::bridge::swift {
|
|
|
195
200
|
using std__weak_ptr_HybridNetServerDriverSpec_ = std::weak_ptr<HybridNetServerDriverSpec>;
|
|
196
201
|
inline std__weak_ptr_HybridNetServerDriverSpec_ weakify_std__shared_ptr_HybridNetServerDriverSpec_(const std::shared_ptr<HybridNetServerDriverSpec>& strong) noexcept { return strong; }
|
|
197
202
|
|
|
203
|
+
// pragma MARK: std::shared_ptr<HybridHttpParserSpec>
|
|
204
|
+
/**
|
|
205
|
+
* Specialized version of `std::shared_ptr<HybridHttpParserSpec>`.
|
|
206
|
+
*/
|
|
207
|
+
using std__shared_ptr_HybridHttpParserSpec_ = std::shared_ptr<HybridHttpParserSpec>;
|
|
208
|
+
std::shared_ptr<HybridHttpParserSpec> create_std__shared_ptr_HybridHttpParserSpec_(void* NON_NULL swiftUnsafePointer) noexcept;
|
|
209
|
+
void* NON_NULL get_std__shared_ptr_HybridHttpParserSpec_(std__shared_ptr_HybridHttpParserSpec_ cppType);
|
|
210
|
+
|
|
211
|
+
// pragma MARK: std::weak_ptr<HybridHttpParserSpec>
|
|
212
|
+
using std__weak_ptr_HybridHttpParserSpec_ = std::weak_ptr<HybridHttpParserSpec>;
|
|
213
|
+
inline std__weak_ptr_HybridHttpParserSpec_ weakify_std__shared_ptr_HybridHttpParserSpec_(const std::shared_ptr<HybridHttpParserSpec>& strong) noexcept { return strong; }
|
|
214
|
+
|
|
198
215
|
// pragma MARK: std::shared_ptr<HybridNetDriverSpec>
|
|
199
216
|
/**
|
|
200
217
|
* Specialized version of `std::shared_ptr<HybridNetDriverSpec>`.
|
|
@@ -225,6 +242,15 @@ namespace margelo::nitro::net::bridge::swift {
|
|
|
225
242
|
return Result<std::shared_ptr<HybridNetServerDriverSpec>>::withError(error);
|
|
226
243
|
}
|
|
227
244
|
|
|
245
|
+
// pragma MARK: Result<std::shared_ptr<HybridHttpParserSpec>>
|
|
246
|
+
using Result_std__shared_ptr_HybridHttpParserSpec__ = Result<std::shared_ptr<HybridHttpParserSpec>>;
|
|
247
|
+
inline Result_std__shared_ptr_HybridHttpParserSpec__ create_Result_std__shared_ptr_HybridHttpParserSpec__(const std::shared_ptr<HybridHttpParserSpec>& value) noexcept {
|
|
248
|
+
return Result<std::shared_ptr<HybridHttpParserSpec>>::withValue(value);
|
|
249
|
+
}
|
|
250
|
+
inline Result_std__shared_ptr_HybridHttpParserSpec__ create_Result_std__shared_ptr_HybridHttpParserSpec__(const std::exception_ptr& error) noexcept {
|
|
251
|
+
return Result<std::shared_ptr<HybridHttpParserSpec>>::withError(error);
|
|
252
|
+
}
|
|
253
|
+
|
|
228
254
|
// pragma MARK: Result<double>
|
|
229
255
|
using Result_double_ = Result<double>;
|
|
230
256
|
inline Result_double_ create_Result_double_(double value) noexcept {
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
#pragma once
|
|
9
9
|
|
|
10
10
|
// Forward declarations of C++ defined types
|
|
11
|
+
// Forward declaration of `HybridHttpParserSpec` to properly resolve imports.
|
|
12
|
+
namespace margelo::nitro::net { class HybridHttpParserSpec; }
|
|
11
13
|
// Forward declaration of `HybridNetDriverSpec` to properly resolve imports.
|
|
12
14
|
namespace margelo::nitro::net { class HybridNetDriverSpec; }
|
|
13
15
|
// Forward declaration of `HybridNetServerDriverSpec` to properly resolve imports.
|
|
@@ -18,6 +20,7 @@ namespace margelo::nitro::net { class HybridNetSocketDriverSpec; }
|
|
|
18
20
|
namespace margelo::nitro::net { struct NetConfig; }
|
|
19
21
|
|
|
20
22
|
// Include C++ defined types
|
|
23
|
+
#include "HybridHttpParserSpec.hpp"
|
|
21
24
|
#include "HybridNetDriverSpec.hpp"
|
|
22
25
|
#include "HybridNetServerDriverSpec.hpp"
|
|
23
26
|
#include "HybridNetSocketDriverSpec.hpp"
|
|
@@ -40,6 +43,8 @@ namespace margelo::nitro::net { struct NetConfig; }
|
|
|
40
43
|
#include <NitroModules/DateToChronoDate.hpp>
|
|
41
44
|
|
|
42
45
|
// Forward declarations of Swift defined types
|
|
46
|
+
// Forward declaration of `HybridHttpParserSpec_cxx` to properly resolve imports.
|
|
47
|
+
namespace RustCNet { class HybridHttpParserSpec_cxx; }
|
|
43
48
|
// Forward declaration of `HybridNetDriverSpec_cxx` to properly resolve imports.
|
|
44
49
|
namespace RustCNet { class HybridNetDriverSpec_cxx; }
|
|
45
50
|
// Forward declaration of `HybridNetServerDriverSpec_cxx` to properly resolve imports.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridHttpParserSpecSwift.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
|
+
#include "HybridHttpParserSpecSwift.hpp"
|
|
9
|
+
|
|
10
|
+
namespace margelo::nitro::net {
|
|
11
|
+
} // namespace margelo::nitro::net
|