react-native-nitro-net 0.4.1 → 0.4.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 (88) hide show
  1. package/android/libs/arm64-v8a/librust_c_net.so +0 -0
  2. package/android/libs/armeabi-v7a/librust_c_net.so +0 -0
  3. package/android/libs/x86/librust_c_net.so +0 -0
  4. package/android/libs/x86_64/librust_c_net.so +0 -0
  5. package/cpp/HybridHttpParser.hpp +44 -16
  6. package/cpp/NetBindings.hpp +192 -96
  7. package/cpp/NetManager.hpp +16 -10
  8. package/ios/Frameworks/RustCNet.xcframework/Info.plist +5 -5
  9. package/ios/Frameworks/RustCNet.xcframework/ios-arm64/RustCNet.framework/RustCNet +0 -0
  10. package/ios/Frameworks/RustCNet.xcframework/ios-arm64_x86_64-simulator/RustCNet.framework/RustCNet +0 -0
  11. package/lib/Logger.d.ts +16 -0
  12. package/lib/Logger.d.ts.map +1 -0
  13. package/lib/Logger.js +28 -0
  14. package/lib/Net.nitro.d.ts +6 -2
  15. package/lib/Net.nitro.d.ts.map +1 -1
  16. package/lib/http.d.ts.map +1 -1
  17. package/lib/http.js +38 -23
  18. package/lib/net.d.ts +1 -2
  19. package/lib/net.d.ts.map +1 -1
  20. package/lib/net.js +22 -22
  21. package/lib/tls.d.ts.map +1 -1
  22. package/lib/tls.js +3 -5
  23. package/nitrogen/generated/android/RustCNet+autolinking.cmake +1 -1
  24. package/nitrogen/generated/android/RustCNet+autolinking.gradle +1 -1
  25. package/nitrogen/generated/android/RustCNetOnLoad.cpp +27 -22
  26. package/nitrogen/generated/android/RustCNetOnLoad.hpp +14 -5
  27. package/nitrogen/generated/android/c++/JFunc_void_double_std__shared_ptr_ArrayBuffer_.hpp +1 -1
  28. package/nitrogen/generated/android/c++/JHttpParsedMessage.hpp +64 -0
  29. package/nitrogen/generated/android/c++/JHybridHttpParserSpec.cpp +28 -23
  30. package/nitrogen/generated/android/c++/JHybridHttpParserSpec.hpp +21 -23
  31. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.cpp +35 -34
  32. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.hpp +20 -22
  33. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.cpp +31 -30
  34. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.hpp +20 -22
  35. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.cpp +53 -52
  36. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.hpp +20 -22
  37. package/nitrogen/generated/android/c++/JNetConfig.hpp +1 -1
  38. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/Func_void_double_std__shared_ptr_ArrayBuffer_.kt +1 -1
  39. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HttpParsedMessage.kt +41 -0
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridHttpParserSpec.kt +15 -18
  41. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetDriverSpec.kt +16 -19
  42. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetServerDriverSpec.kt +16 -19
  43. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetSocketDriverSpec.kt +16 -19
  44. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/NetConfig.kt +1 -1
  45. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/RustCNetOnLoad.kt +1 -1
  46. package/nitrogen/generated/ios/RustCNet+autolinking.rb +1 -1
  47. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.cpp +1 -1
  48. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.hpp +17 -5
  49. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Umbrella.hpp +4 -1
  50. package/nitrogen/generated/ios/RustCNetAutolinking.mm +1 -1
  51. package/nitrogen/generated/ios/RustCNetAutolinking.swift +5 -1
  52. package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.cpp +1 -1
  53. package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.hpp +12 -2
  54. package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.cpp +1 -1
  55. package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.hpp +7 -1
  56. package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.cpp +1 -1
  57. package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.hpp +7 -1
  58. package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.cpp +1 -1
  59. package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.hpp +7 -1
  60. package/nitrogen/generated/ios/swift/Func_void_double_std__shared_ptr_ArrayBuffer_.swift +1 -2
  61. package/nitrogen/generated/ios/swift/HttpParsedMessage.swift +47 -0
  62. package/nitrogen/generated/ios/swift/HybridHttpParserSpec.swift +4 -5
  63. package/nitrogen/generated/ios/swift/HybridHttpParserSpec_cxx.swift +13 -6
  64. package/nitrogen/generated/ios/swift/HybridNetDriverSpec.swift +3 -4
  65. package/nitrogen/generated/ios/swift/HybridNetDriverSpec_cxx.swift +9 -2
  66. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec.swift +3 -4
  67. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec_cxx.swift +49 -7
  68. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec.swift +3 -4
  69. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec_cxx.swift +25 -4
  70. package/nitrogen/generated/ios/swift/NetConfig.swift +9 -3
  71. package/nitrogen/generated/shared/c++/HttpParsedMessage.hpp +89 -0
  72. package/nitrogen/generated/shared/c++/HybridHttpParserSpec.cpp +1 -1
  73. package/nitrogen/generated/shared/c++/HybridHttpParserSpec.hpp +5 -4
  74. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.cpp +1 -1
  75. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.hpp +1 -1
  76. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.cpp +1 -1
  77. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.hpp +1 -1
  78. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.cpp +1 -1
  79. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.hpp +1 -1
  80. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.cpp +1 -1
  81. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.hpp +1 -1
  82. package/nitrogen/generated/shared/c++/NetConfig.hpp +1 -1
  83. package/package.json +4 -5
  84. package/src/Logger.ts +31 -0
  85. package/src/Net.nitro.ts +6 -2
  86. package/src/http.ts +42 -25
  87. package/src/net.ts +23 -22
  88. package/src/tls.ts +3 -5
@@ -2,7 +2,7 @@
2
2
  /// HybridHttpParserSpec.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -18,33 +18,33 @@ namespace margelo::nitro::net {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridHttpParserSpec: public jni::HybridClass<JHybridHttpParserSpec, JHybridObject>,
22
- public virtual HybridHttpParserSpec {
21
+ class JHybridHttpParserSpec: public virtual HybridHttpParserSpec, public virtual JHybridObject {
23
22
  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)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridHttpParserSpec;";
25
+ std::shared_ptr<JHybridHttpParserSpec> getJHybridHttpParserSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridHttpParserSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridHttpParserSpec(const jni::local_ref<JHybridHttpParserSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridHttpParserSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridHttpParserSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  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 {
47
+ inline const jni::global_ref<JHybridHttpParserSpec::JavaPart>& getJavaPart() const noexcept {
48
48
  return _javaPart;
49
49
  }
50
50
 
@@ -54,12 +54,10 @@ namespace margelo::nitro::net {
54
54
 
55
55
  public:
56
56
  // Methods
57
- std::string feed(const std::shared_ptr<ArrayBuffer>& data) override;
57
+ HttpParsedMessage feed(const std::shared_ptr<ArrayBuffer>& data) override;
58
58
 
59
59
  private:
60
- friend HybridBase;
61
- using HybridBase::HybridBase;
62
- jni::global_ref<JHybridHttpParserSpec::javaobject> _javaPart;
60
+ jni::global_ref<JHybridHttpParserSpec::JavaPart> _javaPart;
63
61
  };
64
62
 
65
63
  } // namespace margelo::nitro::net
@@ -2,7 +2,7 @@
2
2
  /// JHybridNetDriverSpec.cpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #include "JHybridNetDriverSpec.hpp"
@@ -32,30 +32,31 @@ namespace margelo::nitro::net { struct NetConfig; }
32
32
 
33
33
  namespace margelo::nitro::net {
34
34
 
35
- jni::local_ref<JHybridNetDriverSpec::jhybriddata> JHybridNetDriverSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
36
- return makeCxxInstance(jThis);
37
- }
38
-
39
- void JHybridNetDriverSpec::registerNatives() {
40
- registerHybrid({
41
- makeNativeMethod("initHybrid", JHybridNetDriverSpec::initHybrid),
42
- });
35
+ std::shared_ptr<JHybridNetDriverSpec> JHybridNetDriverSpec::JavaPart::getJHybridNetDriverSpec() {
36
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
37
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridNetDriverSpec>(hybridObject);
38
+ if (castHybridObject == nullptr) [[unlikely]] {
39
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridNetDriverSpec!");
40
+ }
41
+ return castHybridObject;
43
42
  }
44
43
 
45
- size_t JHybridNetDriverSpec::getExternalMemorySize() noexcept {
46
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
47
- return method(_javaPart);
44
+ jni::local_ref<JHybridNetDriverSpec::CxxPart::jhybriddata> JHybridNetDriverSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
45
+ return makeCxxInstance(jThis);
48
46
  }
49
47
 
50
- void JHybridNetDriverSpec::dispose() noexcept {
51
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
52
- method(_javaPart);
48
+ std::shared_ptr<JHybridObject> JHybridNetDriverSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
49
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridNetDriverSpec::JavaPart>(javaPart);
50
+ if (castJavaPart == nullptr) [[unlikely]] {
51
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridNetDriverSpec::JavaPart!");
52
+ }
53
+ return std::make_shared<JHybridNetDriverSpec>(castJavaPart);
53
54
  }
54
55
 
55
- std::string JHybridNetDriverSpec::toString() {
56
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
57
- auto javaString = method(_javaPart);
58
- return javaString->toStdString();
56
+ void JHybridNetDriverSpec::CxxPart::registerNatives() {
57
+ registerHybrid({
58
+ makeNativeMethod("initHybrid", JHybridNetDriverSpec::CxxPart::initHybrid),
59
+ });
59
60
  }
60
61
 
61
62
  // Properties
@@ -63,57 +64,57 @@ namespace margelo::nitro::net {
63
64
 
64
65
  // Methods
65
66
  std::shared_ptr<HybridNetSocketDriverSpec> JHybridNetDriverSpec::createSocket(const std::optional<std::string>& id) {
66
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridNetSocketDriverSpec::javaobject>(jni::alias_ref<jni::JString> /* id */)>("createSocket");
67
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridNetSocketDriverSpec::JavaPart>(jni::alias_ref<jni::JString> /* id */)>("createSocket");
67
68
  auto __result = method(_javaPart, id.has_value() ? jni::make_jstring(id.value()) : nullptr);
68
- return __result->cthis()->shared_cast<JHybridNetSocketDriverSpec>();
69
+ return __result->getJHybridNetSocketDriverSpec();
69
70
  }
70
71
  std::shared_ptr<HybridNetServerDriverSpec> JHybridNetDriverSpec::createServer() {
71
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridNetServerDriverSpec::javaobject>()>("createServer");
72
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridNetServerDriverSpec::JavaPart>()>("createServer");
72
73
  auto __result = method(_javaPart);
73
- return __result->cthis()->shared_cast<JHybridNetServerDriverSpec>();
74
+ return __result->getJHybridNetServerDriverSpec();
74
75
  }
75
76
  std::shared_ptr<HybridHttpParserSpec> JHybridNetDriverSpec::createHttpParser(double mode) {
76
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridHttpParserSpec::javaobject>(double /* mode */)>("createHttpParser");
77
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridHttpParserSpec::JavaPart>(double /* mode */)>("createHttpParser");
77
78
  auto __result = method(_javaPart, mode);
78
- return __result->cthis()->shared_cast<JHybridHttpParserSpec>();
79
+ return __result->getJHybridHttpParserSpec();
79
80
  }
80
81
  double JHybridNetDriverSpec::createSecureContext(const std::string& cert, const std::string& key, const std::optional<std::string>& passphrase) {
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");
82
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double(jni::alias_ref<jni::JString> /* cert */, jni::alias_ref<jni::JString> /* key */, jni::alias_ref<jni::JString> /* passphrase */)>("createSecureContext");
82
83
  auto __result = method(_javaPart, jni::make_jstring(cert), jni::make_jstring(key), passphrase.has_value() ? jni::make_jstring(passphrase.value()) : nullptr);
83
84
  return __result;
84
85
  }
85
86
  double JHybridNetDriverSpec::createEmptySecureContext() {
86
- static const auto method = javaClassStatic()->getMethod<double()>("createEmptySecureContext");
87
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("createEmptySecureContext");
87
88
  auto __result = method(_javaPart);
88
89
  return __result;
89
90
  }
90
91
  void JHybridNetDriverSpec::addCACertToSecureContext(double scId, const std::string& ca) {
91
- static const auto method = javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<jni::JString> /* ca */)>("addCACertToSecureContext");
92
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<jni::JString> /* ca */)>("addCACertToSecureContext");
92
93
  method(_javaPart, scId, jni::make_jstring(ca));
93
94
  }
94
95
  void JHybridNetDriverSpec::addContextToSecureContext(double scId, const std::string& hostname, const std::string& cert, const std::string& key, const std::optional<std::string>& passphrase) {
95
- static const auto method = javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<jni::JString> /* hostname */, jni::alias_ref<jni::JString> /* cert */, jni::alias_ref<jni::JString> /* key */, jni::alias_ref<jni::JString> /* passphrase */)>("addContextToSecureContext");
96
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<jni::JString> /* hostname */, jni::alias_ref<jni::JString> /* cert */, jni::alias_ref<jni::JString> /* key */, jni::alias_ref<jni::JString> /* passphrase */)>("addContextToSecureContext");
96
97
  method(_javaPart, scId, jni::make_jstring(hostname), jni::make_jstring(cert), jni::make_jstring(key), passphrase.has_value() ? jni::make_jstring(passphrase.value()) : nullptr);
97
98
  }
98
99
  void JHybridNetDriverSpec::setPFXToSecureContext(double scId, const std::shared_ptr<ArrayBuffer>& pfx, const std::optional<std::string>& passphrase) {
99
- static const auto method = javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<JArrayBuffer::javaobject> /* pfx */, jni::alias_ref<jni::JString> /* passphrase */)>("setPFXToSecureContext");
100
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<JArrayBuffer::javaobject> /* pfx */, jni::alias_ref<jni::JString> /* passphrase */)>("setPFXToSecureContext");
100
101
  method(_javaPart, scId, JArrayBuffer::wrap(pfx), passphrase.has_value() ? jni::make_jstring(passphrase.value()) : nullptr);
101
102
  }
102
103
  void JHybridNetDriverSpec::setOCSPResponseToSecureContext(double scId, const std::shared_ptr<ArrayBuffer>& ocsp) {
103
- static const auto method = javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<JArrayBuffer::javaobject> /* ocsp */)>("setOCSPResponseToSecureContext");
104
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<JArrayBuffer::javaobject> /* ocsp */)>("setOCSPResponseToSecureContext");
104
105
  method(_javaPart, scId, JArrayBuffer::wrap(ocsp));
105
106
  }
106
107
  std::optional<std::shared_ptr<ArrayBuffer>> JHybridNetDriverSpec::getTicketKeys(double scId) {
107
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JArrayBuffer::javaobject>(double /* scId */)>("getTicketKeys");
108
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JArrayBuffer::javaobject>(double /* scId */)>("getTicketKeys");
108
109
  auto __result = method(_javaPart, scId);
109
110
  return __result != nullptr ? std::make_optional(__result->cthis()->getArrayBuffer()) : std::nullopt;
110
111
  }
111
112
  void JHybridNetDriverSpec::setTicketKeys(double scId, const std::shared_ptr<ArrayBuffer>& keys) {
112
- static const auto method = javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<JArrayBuffer::javaobject> /* keys */)>("setTicketKeys");
113
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* scId */, jni::alias_ref<JArrayBuffer::javaobject> /* keys */)>("setTicketKeys");
113
114
  method(_javaPart, scId, JArrayBuffer::wrap(keys));
114
115
  }
115
116
  void JHybridNetDriverSpec::initWithConfig(const NetConfig& config) {
116
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JNetConfig> /* config */)>("initWithConfig");
117
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JNetConfig> /* config */)>("initWithConfig");
117
118
  method(_javaPart, JNetConfig::fromCpp(config));
118
119
  }
119
120
 
@@ -2,7 +2,7 @@
2
2
  /// HybridNetDriverSpec.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -18,33 +18,33 @@ namespace margelo::nitro::net {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridNetDriverSpec: public jni::HybridClass<JHybridNetDriverSpec, JHybridObject>,
22
- public virtual HybridNetDriverSpec {
21
+ class JHybridNetDriverSpec: public virtual HybridNetDriverSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridNetDriverSpec;";
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 JHybridNetDriverSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridNetDriverSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridNetDriverSpec;";
25
+ std::shared_ptr<JHybridNetDriverSpec> getJHybridNetDriverSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridNetDriverSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridNetDriverSpec(const jni::local_ref<JHybridNetDriverSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridNetDriverSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridNetDriverSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  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<JHybridNetDriverSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridNetDriverSpec::JavaPart>& getJavaPart() const noexcept {
48
48
  return _javaPart;
49
49
  }
50
50
 
@@ -68,9 +68,7 @@ namespace margelo::nitro::net {
68
68
  void initWithConfig(const NetConfig& config) override;
69
69
 
70
70
  private:
71
- friend HybridBase;
72
- using HybridBase::HybridBase;
73
- jni::global_ref<JHybridNetDriverSpec::javaobject> _javaPart;
71
+ jni::global_ref<JHybridNetDriverSpec::JavaPart> _javaPart;
74
72
  };
75
73
 
76
74
  } // namespace margelo::nitro::net
@@ -2,7 +2,7 @@
2
2
  /// JHybridNetServerDriverSpec.cpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #include "JHybridNetServerDriverSpec.hpp"
@@ -19,35 +19,36 @@
19
19
 
20
20
  namespace margelo::nitro::net {
21
21
 
22
- jni::local_ref<JHybridNetServerDriverSpec::jhybriddata> JHybridNetServerDriverSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
23
- return makeCxxInstance(jThis);
24
- }
25
-
26
- void JHybridNetServerDriverSpec::registerNatives() {
27
- registerHybrid({
28
- makeNativeMethod("initHybrid", JHybridNetServerDriverSpec::initHybrid),
29
- });
22
+ std::shared_ptr<JHybridNetServerDriverSpec> JHybridNetServerDriverSpec::JavaPart::getJHybridNetServerDriverSpec() {
23
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
24
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridNetServerDriverSpec>(hybridObject);
25
+ if (castHybridObject == nullptr) [[unlikely]] {
26
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridNetServerDriverSpec!");
27
+ }
28
+ return castHybridObject;
30
29
  }
31
30
 
32
- size_t JHybridNetServerDriverSpec::getExternalMemorySize() noexcept {
33
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
34
- return method(_javaPart);
31
+ jni::local_ref<JHybridNetServerDriverSpec::CxxPart::jhybriddata> JHybridNetServerDriverSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
32
+ return makeCxxInstance(jThis);
35
33
  }
36
34
 
37
- void JHybridNetServerDriverSpec::dispose() noexcept {
38
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
39
- method(_javaPart);
35
+ std::shared_ptr<JHybridObject> JHybridNetServerDriverSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
36
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridNetServerDriverSpec::JavaPart>(javaPart);
37
+ if (castJavaPart == nullptr) [[unlikely]] {
38
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridNetServerDriverSpec::JavaPart!");
39
+ }
40
+ return std::make_shared<JHybridNetServerDriverSpec>(castJavaPart);
40
41
  }
41
42
 
42
- std::string JHybridNetServerDriverSpec::toString() {
43
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
44
- auto javaString = method(_javaPart);
45
- return javaString->toStdString();
43
+ void JHybridNetServerDriverSpec::CxxPart::registerNatives() {
44
+ registerHybrid({
45
+ makeNativeMethod("initHybrid", JHybridNetServerDriverSpec::CxxPart::initHybrid),
46
+ });
46
47
  }
47
48
 
48
49
  // Properties
49
50
  std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)> JHybridNetServerDriverSpec::getOnEvent() {
50
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject>()>("getOnEvent_cxx");
51
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject>()>("getOnEvent_cxx");
51
52
  auto __result = method(_javaPart);
52
53
  return [&]() -> std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)> {
53
54
  if (__result->isInstanceOf(JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::javaClassStatic())) [[likely]] {
@@ -60,47 +61,47 @@ namespace margelo::nitro::net {
60
61
  }();
61
62
  }
62
63
  void JHybridNetServerDriverSpec::setOnEvent(const std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)>& onEvent) {
63
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject> /* onEvent */)>("setOnEvent_cxx");
64
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject> /* onEvent */)>("setOnEvent_cxx");
64
65
  method(_javaPart, JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::fromCpp(onEvent));
65
66
  }
66
67
  double JHybridNetServerDriverSpec::getMaxConnections() {
67
- static const auto method = javaClassStatic()->getMethod<double()>("getMaxConnections");
68
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getMaxConnections");
68
69
  auto __result = method(_javaPart);
69
70
  return __result;
70
71
  }
71
72
  void JHybridNetServerDriverSpec::setMaxConnections(double maxConnections) {
72
- static const auto method = javaClassStatic()->getMethod<void(double /* maxConnections */)>("setMaxConnections");
73
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* maxConnections */)>("setMaxConnections");
73
74
  method(_javaPart, maxConnections);
74
75
  }
75
76
 
76
77
  // Methods
77
78
  void JHybridNetServerDriverSpec::listen(double port, std::optional<double> backlog, std::optional<bool> ipv6Only, std::optional<bool> reusePort) {
78
- static const auto method = javaClassStatic()->getMethod<void(double /* port */, jni::alias_ref<jni::JDouble> /* backlog */, jni::alias_ref<jni::JBoolean> /* ipv6Only */, jni::alias_ref<jni::JBoolean> /* reusePort */)>("listen");
79
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* port */, jni::alias_ref<jni::JDouble> /* backlog */, jni::alias_ref<jni::JBoolean> /* ipv6Only */, jni::alias_ref<jni::JBoolean> /* reusePort */)>("listen");
79
80
  method(_javaPart, port, backlog.has_value() ? jni::JDouble::valueOf(backlog.value()) : nullptr, ipv6Only.has_value() ? jni::JBoolean::valueOf(ipv6Only.value()) : nullptr, reusePort.has_value() ? jni::JBoolean::valueOf(reusePort.value()) : nullptr);
80
81
  }
81
82
  void JHybridNetServerDriverSpec::listenTLS(double port, double secureContextId, std::optional<double> backlog, std::optional<bool> ipv6Only, std::optional<bool> reusePort) {
82
- static const auto method = javaClassStatic()->getMethod<void(double /* port */, double /* secureContextId */, jni::alias_ref<jni::JDouble> /* backlog */, jni::alias_ref<jni::JBoolean> /* ipv6Only */, jni::alias_ref<jni::JBoolean> /* reusePort */)>("listenTLS");
83
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* port */, double /* secureContextId */, jni::alias_ref<jni::JDouble> /* backlog */, jni::alias_ref<jni::JBoolean> /* ipv6Only */, jni::alias_ref<jni::JBoolean> /* reusePort */)>("listenTLS");
83
84
  method(_javaPart, port, secureContextId, backlog.has_value() ? jni::JDouble::valueOf(backlog.value()) : nullptr, ipv6Only.has_value() ? jni::JBoolean::valueOf(ipv6Only.value()) : nullptr, reusePort.has_value() ? jni::JBoolean::valueOf(reusePort.value()) : nullptr);
84
85
  }
85
86
  void JHybridNetServerDriverSpec::listenUnix(const std::string& path, std::optional<double> backlog) {
86
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, jni::alias_ref<jni::JDouble> /* backlog */)>("listenUnix");
87
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, jni::alias_ref<jni::JDouble> /* backlog */)>("listenUnix");
87
88
  method(_javaPart, jni::make_jstring(path), backlog.has_value() ? jni::JDouble::valueOf(backlog.value()) : nullptr);
88
89
  }
89
90
  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
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, double /* secureContextId */, jni::alias_ref<jni::JDouble> /* backlog */)>("listenTLSUnix");
91
92
  method(_javaPart, jni::make_jstring(path), secureContextId, backlog.has_value() ? jni::JDouble::valueOf(backlog.value()) : nullptr);
92
93
  }
93
94
  void JHybridNetServerDriverSpec::listenHandle(double fd, std::optional<double> backlog) {
94
- static const auto method = javaClassStatic()->getMethod<void(double /* fd */, jni::alias_ref<jni::JDouble> /* backlog */)>("listenHandle");
95
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* fd */, jni::alias_ref<jni::JDouble> /* backlog */)>("listenHandle");
95
96
  method(_javaPart, fd, backlog.has_value() ? jni::JDouble::valueOf(backlog.value()) : nullptr);
96
97
  }
97
98
  std::string JHybridNetServerDriverSpec::getLocalAddress() {
98
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getLocalAddress");
99
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getLocalAddress");
99
100
  auto __result = method(_javaPart);
100
101
  return __result->toStdString();
101
102
  }
102
103
  void JHybridNetServerDriverSpec::close() {
103
- static const auto method = javaClassStatic()->getMethod<void()>("close");
104
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("close");
104
105
  method(_javaPart);
105
106
  }
106
107
 
@@ -2,7 +2,7 @@
2
2
  /// HybridNetServerDriverSpec.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -18,33 +18,33 @@ namespace margelo::nitro::net {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridNetServerDriverSpec: public jni::HybridClass<JHybridNetServerDriverSpec, JHybridObject>,
22
- public virtual HybridNetServerDriverSpec {
21
+ class JHybridNetServerDriverSpec: public virtual HybridNetServerDriverSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridNetServerDriverSpec;";
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 JHybridNetServerDriverSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridNetServerDriverSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridNetServerDriverSpec;";
25
+ std::shared_ptr<JHybridNetServerDriverSpec> getJHybridNetServerDriverSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridNetServerDriverSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridNetServerDriverSpec(const jni::local_ref<JHybridNetServerDriverSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridNetServerDriverSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridNetServerDriverSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  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<JHybridNetServerDriverSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridNetServerDriverSpec::JavaPart>& getJavaPart() const noexcept {
48
48
  return _javaPart;
49
49
  }
50
50
 
@@ -66,9 +66,7 @@ namespace margelo::nitro::net {
66
66
  void close() override;
67
67
 
68
68
  private:
69
- friend HybridBase;
70
- using HybridBase::HybridBase;
71
- jni::global_ref<JHybridNetServerDriverSpec::javaobject> _javaPart;
69
+ jni::global_ref<JHybridNetServerDriverSpec::JavaPart> _javaPart;
72
70
  };
73
71
 
74
72
  } // namespace margelo::nitro::net