react-native-nitro-net 0.4.2 → 0.5.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.
Files changed (80) 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/Net.nitro.d.ts +6 -2
  12. package/lib/Net.nitro.d.ts.map +1 -1
  13. package/lib/http.d.ts.map +1 -1
  14. package/lib/http.js +34 -17
  15. package/lib/net.d.ts.map +1 -1
  16. package/lib/net.js +19 -10
  17. package/nitrogen/generated/android/RustCNet+autolinking.cmake +1 -1
  18. package/nitrogen/generated/android/RustCNet+autolinking.gradle +1 -1
  19. package/nitrogen/generated/android/RustCNetOnLoad.cpp +27 -22
  20. package/nitrogen/generated/android/RustCNetOnLoad.hpp +14 -5
  21. package/nitrogen/generated/android/c++/JFunc_void_double_std__shared_ptr_ArrayBuffer_.hpp +1 -1
  22. package/nitrogen/generated/android/c++/JHttpParsedMessage.hpp +64 -0
  23. package/nitrogen/generated/android/c++/JHybridHttpParserSpec.cpp +28 -23
  24. package/nitrogen/generated/android/c++/JHybridHttpParserSpec.hpp +21 -23
  25. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.cpp +35 -34
  26. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.hpp +20 -22
  27. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.cpp +31 -30
  28. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.hpp +20 -22
  29. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.cpp +53 -52
  30. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.hpp +20 -22
  31. package/nitrogen/generated/android/c++/JNetConfig.hpp +1 -1
  32. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/Func_void_double_std__shared_ptr_ArrayBuffer_.kt +1 -1
  33. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HttpParsedMessage.kt +41 -0
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridHttpParserSpec.kt +15 -18
  35. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetDriverSpec.kt +16 -19
  36. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetServerDriverSpec.kt +16 -19
  37. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetSocketDriverSpec.kt +16 -19
  38. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/NetConfig.kt +1 -1
  39. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/RustCNetOnLoad.kt +1 -1
  40. package/nitrogen/generated/ios/RustCNet+autolinking.rb +1 -1
  41. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.cpp +1 -1
  42. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.hpp +17 -5
  43. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Umbrella.hpp +4 -1
  44. package/nitrogen/generated/ios/RustCNetAutolinking.mm +1 -1
  45. package/nitrogen/generated/ios/RustCNetAutolinking.swift +5 -1
  46. package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.cpp +1 -1
  47. package/nitrogen/generated/ios/c++/HybridHttpParserSpecSwift.hpp +12 -2
  48. package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.cpp +1 -1
  49. package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.hpp +7 -1
  50. package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.cpp +1 -1
  51. package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.hpp +7 -1
  52. package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.cpp +1 -1
  53. package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.hpp +7 -1
  54. package/nitrogen/generated/ios/swift/Func_void_double_std__shared_ptr_ArrayBuffer_.swift +1 -2
  55. package/nitrogen/generated/ios/swift/HttpParsedMessage.swift +47 -0
  56. package/nitrogen/generated/ios/swift/HybridHttpParserSpec.swift +4 -5
  57. package/nitrogen/generated/ios/swift/HybridHttpParserSpec_cxx.swift +13 -6
  58. package/nitrogen/generated/ios/swift/HybridNetDriverSpec.swift +3 -4
  59. package/nitrogen/generated/ios/swift/HybridNetDriverSpec_cxx.swift +9 -2
  60. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec.swift +3 -4
  61. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec_cxx.swift +49 -7
  62. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec.swift +3 -4
  63. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec_cxx.swift +25 -4
  64. package/nitrogen/generated/ios/swift/NetConfig.swift +9 -3
  65. package/nitrogen/generated/shared/c++/HttpParsedMessage.hpp +89 -0
  66. package/nitrogen/generated/shared/c++/HybridHttpParserSpec.cpp +1 -1
  67. package/nitrogen/generated/shared/c++/HybridHttpParserSpec.hpp +5 -4
  68. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.cpp +1 -1
  69. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.hpp +1 -1
  70. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.cpp +1 -1
  71. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.hpp +1 -1
  72. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.cpp +1 -1
  73. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.hpp +1 -1
  74. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.cpp +1 -1
  75. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.hpp +1 -1
  76. package/nitrogen/generated/shared/c++/NetConfig.hpp +1 -1
  77. package/package.json +5 -6
  78. package/src/Net.nitro.ts +6 -2
  79. package/src/http.ts +37 -19
  80. package/src/net.ts +19 -10
@@ -2,7 +2,7 @@
2
2
  /// JHybridNetSocketDriverSpec.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 "JHybridNetSocketDriverSpec.hpp"
@@ -19,40 +19,41 @@
19
19
 
20
20
  namespace margelo::nitro::net {
21
21
 
22
- jni::local_ref<JHybridNetSocketDriverSpec::jhybriddata> JHybridNetSocketDriverSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
23
- return makeCxxInstance(jThis);
24
- }
25
-
26
- void JHybridNetSocketDriverSpec::registerNatives() {
27
- registerHybrid({
28
- makeNativeMethod("initHybrid", JHybridNetSocketDriverSpec::initHybrid),
29
- });
22
+ std::shared_ptr<JHybridNetSocketDriverSpec> JHybridNetSocketDriverSpec::JavaPart::getJHybridNetSocketDriverSpec() {
23
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
24
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridNetSocketDriverSpec>(hybridObject);
25
+ if (castHybridObject == nullptr) [[unlikely]] {
26
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridNetSocketDriverSpec!");
27
+ }
28
+ return castHybridObject;
30
29
  }
31
30
 
32
- size_t JHybridNetSocketDriverSpec::getExternalMemorySize() noexcept {
33
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
34
- return method(_javaPart);
31
+ jni::local_ref<JHybridNetSocketDriverSpec::CxxPart::jhybriddata> JHybridNetSocketDriverSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
32
+ return makeCxxInstance(jThis);
35
33
  }
36
34
 
37
- void JHybridNetSocketDriverSpec::dispose() noexcept {
38
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
39
- method(_javaPart);
35
+ std::shared_ptr<JHybridObject> JHybridNetSocketDriverSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
36
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridNetSocketDriverSpec::JavaPart>(javaPart);
37
+ if (castJavaPart == nullptr) [[unlikely]] {
38
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridNetSocketDriverSpec::JavaPart!");
39
+ }
40
+ return std::make_shared<JHybridNetSocketDriverSpec>(castJavaPart);
40
41
  }
41
42
 
42
- std::string JHybridNetSocketDriverSpec::toString() {
43
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
44
- auto javaString = method(_javaPart);
45
- return javaString->toStdString();
43
+ void JHybridNetSocketDriverSpec::CxxPart::registerNatives() {
44
+ registerHybrid({
45
+ makeNativeMethod("initHybrid", JHybridNetSocketDriverSpec::CxxPart::initHybrid),
46
+ });
46
47
  }
47
48
 
48
49
  // Properties
49
50
  double JHybridNetSocketDriverSpec::getId() {
50
- static const auto method = javaClassStatic()->getMethod<double()>("getId");
51
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getId");
51
52
  auto __result = method(_javaPart);
52
53
  return __result;
53
54
  }
54
55
  std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)> JHybridNetSocketDriverSpec::getOnEvent() {
55
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject>()>("getOnEvent_cxx");
56
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject>()>("getOnEvent_cxx");
56
57
  auto __result = method(_javaPart);
57
58
  return [&]() -> std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)> {
58
59
  if (__result->isInstanceOf(JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::javaClassStatic())) [[likely]] {
@@ -65,140 +66,140 @@ namespace margelo::nitro::net {
65
66
  }();
66
67
  }
67
68
  void JHybridNetSocketDriverSpec::setOnEvent(const std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)>& onEvent) {
68
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject> /* onEvent */)>("setOnEvent_cxx");
69
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject> /* onEvent */)>("setOnEvent_cxx");
69
70
  method(_javaPart, JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::fromCpp(onEvent));
70
71
  }
71
72
 
72
73
  // Methods
73
74
  void JHybridNetSocketDriverSpec::connect(const std::string& host, double port) {
74
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* host */, double /* port */)>("connect");
75
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* host */, double /* port */)>("connect");
75
76
  method(_javaPart, jni::make_jstring(host), port);
76
77
  }
77
78
  void JHybridNetSocketDriverSpec::connectTLS(const std::string& host, double port, const std::optional<std::string>& serverName, std::optional<bool> rejectUnauthorized) {
78
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* host */, double /* port */, jni::alias_ref<jni::JString> /* serverName */, jni::alias_ref<jni::JBoolean> /* rejectUnauthorized */)>("connectTLS");
79
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* host */, double /* port */, jni::alias_ref<jni::JString> /* serverName */, jni::alias_ref<jni::JBoolean> /* rejectUnauthorized */)>("connectTLS");
79
80
  method(_javaPart, jni::make_jstring(host), port, serverName.has_value() ? jni::make_jstring(serverName.value()) : nullptr, rejectUnauthorized.has_value() ? jni::JBoolean::valueOf(rejectUnauthorized.value()) : nullptr);
80
81
  }
81
82
  void JHybridNetSocketDriverSpec::connectTLSWithContext(const std::string& host, double port, const std::optional<std::string>& serverName, std::optional<bool> rejectUnauthorized, std::optional<double> secureContextId) {
82
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* host */, double /* port */, jni::alias_ref<jni::JString> /* serverName */, jni::alias_ref<jni::JBoolean> /* rejectUnauthorized */, jni::alias_ref<jni::JDouble> /* secureContextId */)>("connectTLSWithContext");
83
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* host */, double /* port */, jni::alias_ref<jni::JString> /* serverName */, jni::alias_ref<jni::JBoolean> /* rejectUnauthorized */, jni::alias_ref<jni::JDouble> /* secureContextId */)>("connectTLSWithContext");
83
84
  method(_javaPart, jni::make_jstring(host), port, serverName.has_value() ? jni::make_jstring(serverName.value()) : nullptr, rejectUnauthorized.has_value() ? jni::JBoolean::valueOf(rejectUnauthorized.value()) : nullptr, secureContextId.has_value() ? jni::JDouble::valueOf(secureContextId.value()) : nullptr);
84
85
  }
85
86
  std::optional<std::string> JHybridNetSocketDriverSpec::getAuthorizationError() {
86
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getAuthorizationError");
87
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getAuthorizationError");
87
88
  auto __result = method(_javaPart);
88
89
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
89
90
  }
90
91
  std::optional<std::string> JHybridNetSocketDriverSpec::getProtocol() {
91
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getProtocol");
92
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getProtocol");
92
93
  auto __result = method(_javaPart);
93
94
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
94
95
  }
95
96
  std::optional<std::string> JHybridNetSocketDriverSpec::getCipher() {
96
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getCipher");
97
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getCipher");
97
98
  auto __result = method(_javaPart);
98
99
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
99
100
  }
100
101
  std::optional<std::string> JHybridNetSocketDriverSpec::getALPN() {
101
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getALPN");
102
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getALPN");
102
103
  auto __result = method(_javaPart);
103
104
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
104
105
  }
105
106
  std::optional<std::string> JHybridNetSocketDriverSpec::getPeerCertificateJSON() {
106
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getPeerCertificateJSON");
107
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getPeerCertificateJSON");
107
108
  auto __result = method(_javaPart);
108
109
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
109
110
  }
110
111
  std::optional<std::string> JHybridNetSocketDriverSpec::getEphemeralKeyInfo() {
111
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getEphemeralKeyInfo");
112
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getEphemeralKeyInfo");
112
113
  auto __result = method(_javaPart);
113
114
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
114
115
  }
115
116
  std::optional<std::string> JHybridNetSocketDriverSpec::getSharedSigalgs() {
116
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getSharedSigalgs");
117
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getSharedSigalgs");
117
118
  auto __result = method(_javaPart);
118
119
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
119
120
  }
120
121
  bool JHybridNetSocketDriverSpec::isSessionReused() {
121
- static const auto method = javaClassStatic()->getMethod<jboolean()>("isSessionReused");
122
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("isSessionReused");
122
123
  auto __result = method(_javaPart);
123
124
  return static_cast<bool>(__result);
124
125
  }
125
126
  std::optional<std::shared_ptr<ArrayBuffer>> JHybridNetSocketDriverSpec::getSession() {
126
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JArrayBuffer::javaobject>()>("getSession");
127
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JArrayBuffer::javaobject>()>("getSession");
127
128
  auto __result = method(_javaPart);
128
129
  return __result != nullptr ? std::make_optional(__result->cthis()->getArrayBuffer()) : std::nullopt;
129
130
  }
130
131
  void JHybridNetSocketDriverSpec::setSession(const std::shared_ptr<ArrayBuffer>& session) {
131
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JArrayBuffer::javaobject> /* session */)>("setSession");
132
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JArrayBuffer::javaobject> /* session */)>("setSession");
132
133
  method(_javaPart, JArrayBuffer::wrap(session));
133
134
  }
134
135
  void JHybridNetSocketDriverSpec::connectUnix(const std::string& path) {
135
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */)>("connectUnix");
136
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */)>("connectUnix");
136
137
  method(_javaPart, jni::make_jstring(path));
137
138
  }
138
139
  void JHybridNetSocketDriverSpec::connectUnixTLS(const std::string& path, const std::optional<std::string>& serverName, std::optional<bool> rejectUnauthorized) {
139
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, jni::alias_ref<jni::JString> /* serverName */, jni::alias_ref<jni::JBoolean> /* rejectUnauthorized */)>("connectUnixTLS");
140
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, jni::alias_ref<jni::JString> /* serverName */, jni::alias_ref<jni::JBoolean> /* rejectUnauthorized */)>("connectUnixTLS");
140
141
  method(_javaPart, jni::make_jstring(path), serverName.has_value() ? jni::make_jstring(serverName.value()) : nullptr, rejectUnauthorized.has_value() ? jni::JBoolean::valueOf(rejectUnauthorized.value()) : nullptr);
141
142
  }
142
143
  void JHybridNetSocketDriverSpec::connectUnixTLSWithContext(const std::string& path, const std::optional<std::string>& serverName, std::optional<bool> rejectUnauthorized, std::optional<double> secureContextId) {
143
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, jni::alias_ref<jni::JString> /* serverName */, jni::alias_ref<jni::JBoolean> /* rejectUnauthorized */, jni::alias_ref<jni::JDouble> /* secureContextId */)>("connectUnixTLSWithContext");
144
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, jni::alias_ref<jni::JString> /* serverName */, jni::alias_ref<jni::JBoolean> /* rejectUnauthorized */, jni::alias_ref<jni::JDouble> /* secureContextId */)>("connectUnixTLSWithContext");
144
145
  method(_javaPart, jni::make_jstring(path), serverName.has_value() ? jni::make_jstring(serverName.value()) : nullptr, rejectUnauthorized.has_value() ? jni::JBoolean::valueOf(rejectUnauthorized.value()) : nullptr, secureContextId.has_value() ? jni::JDouble::valueOf(secureContextId.value()) : nullptr);
145
146
  }
146
147
  void JHybridNetSocketDriverSpec::write(const std::shared_ptr<ArrayBuffer>& data) {
147
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JArrayBuffer::javaobject> /* data */)>("write");
148
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JArrayBuffer::javaobject> /* data */)>("write");
148
149
  method(_javaPart, JArrayBuffer::wrap(data));
149
150
  }
150
151
  void JHybridNetSocketDriverSpec::pause() {
151
- static const auto method = javaClassStatic()->getMethod<void()>("pause");
152
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("pause");
152
153
  method(_javaPart);
153
154
  }
154
155
  void JHybridNetSocketDriverSpec::resume() {
155
- static const auto method = javaClassStatic()->getMethod<void()>("resume");
156
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("resume");
156
157
  method(_javaPart);
157
158
  }
158
159
  void JHybridNetSocketDriverSpec::shutdown() {
159
- static const auto method = javaClassStatic()->getMethod<void()>("shutdown");
160
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("shutdown");
160
161
  method(_javaPart);
161
162
  }
162
163
  void JHybridNetSocketDriverSpec::setTimeout(double timeout) {
163
- static const auto method = javaClassStatic()->getMethod<void(double /* timeout */)>("setTimeout");
164
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* timeout */)>("setTimeout");
164
165
  method(_javaPart, timeout);
165
166
  }
166
167
  void JHybridNetSocketDriverSpec::destroy() {
167
- static const auto method = javaClassStatic()->getMethod<void()>("destroy");
168
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("destroy");
168
169
  method(_javaPart);
169
170
  }
170
171
  void JHybridNetSocketDriverSpec::resetAndDestroy() {
171
- static const auto method = javaClassStatic()->getMethod<void()>("resetAndDestroy");
172
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("resetAndDestroy");
172
173
  method(_javaPart);
173
174
  }
174
175
  void JHybridNetSocketDriverSpec::enableKeylog() {
175
- static const auto method = javaClassStatic()->getMethod<void()>("enableKeylog");
176
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("enableKeylog");
176
177
  method(_javaPart);
177
178
  }
178
179
  void JHybridNetSocketDriverSpec::enableTrace() {
179
- static const auto method = javaClassStatic()->getMethod<void()>("enableTrace");
180
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("enableTrace");
180
181
  method(_javaPart);
181
182
  }
182
183
  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
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JArrayBuffer::javaobject>(double /* length */, jni::alias_ref<jni::JString> /* label */, jni::alias_ref<JArrayBuffer::javaobject> /* context */)>("exportKeyingMaterial");
184
185
  auto __result = method(_javaPart, length, jni::make_jstring(label), context.has_value() ? JArrayBuffer::wrap(context.value()) : nullptr);
185
186
  return __result != nullptr ? std::make_optional(__result->cthis()->getArrayBuffer()) : std::nullopt;
186
187
  }
187
188
  void JHybridNetSocketDriverSpec::setNoDelay(bool enable) {
188
- static const auto method = javaClassStatic()->getMethod<void(jboolean /* enable */)>("setNoDelay");
189
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* enable */)>("setNoDelay");
189
190
  method(_javaPart, enable);
190
191
  }
191
192
  void JHybridNetSocketDriverSpec::setKeepAlive(bool enable, double delay) {
192
- static const auto method = javaClassStatic()->getMethod<void(jboolean /* enable */, double /* delay */)>("setKeepAlive");
193
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* enable */, double /* delay */)>("setKeepAlive");
193
194
  method(_javaPart, enable, delay);
194
195
  }
195
196
  std::string JHybridNetSocketDriverSpec::getLocalAddress() {
196
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getLocalAddress");
197
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getLocalAddress");
197
198
  auto __result = method(_javaPart);
198
199
  return __result->toStdString();
199
200
  }
200
201
  std::string JHybridNetSocketDriverSpec::getRemoteAddress() {
201
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getRemoteAddress");
202
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getRemoteAddress");
202
203
  auto __result = method(_javaPart);
203
204
  return __result->toStdString();
204
205
  }
@@ -2,7 +2,7 @@
2
2
  /// HybridNetSocketDriverSpec.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 JHybridNetSocketDriverSpec: public jni::HybridClass<JHybridNetSocketDriverSpec, JHybridObject>,
22
- public virtual HybridNetSocketDriverSpec {
21
+ class JHybridNetSocketDriverSpec: public virtual HybridNetSocketDriverSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridNetSocketDriverSpec;";
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 JHybridNetSocketDriverSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridNetSocketDriverSpec::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/HybridNetSocketDriverSpec;";
25
+ std::shared_ptr<JHybridNetSocketDriverSpec> getJHybridNetSocketDriverSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/HybridNetSocketDriverSpec$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 JHybridNetSocketDriverSpec(const jni::local_ref<JHybridNetSocketDriverSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridNetSocketDriverSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridNetSocketDriverSpec() 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<JHybridNetSocketDriverSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridNetSocketDriverSpec::JavaPart>& getJavaPart() const noexcept {
48
48
  return _javaPart;
49
49
  }
50
50
 
@@ -88,9 +88,7 @@ namespace margelo::nitro::net {
88
88
  std::string getRemoteAddress() override;
89
89
 
90
90
  private:
91
- friend HybridBase;
92
- using HybridBase::HybridBase;
93
- jni::global_ref<JHybridNetSocketDriverSpec::javaobject> _javaPart;
91
+ jni::global_ref<JHybridNetSocketDriverSpec::JavaPart> _javaPart;
94
92
  };
95
93
 
96
94
  } // namespace margelo::nitro::net
@@ -2,7 +2,7 @@
2
2
  /// JNetConfig.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
@@ -2,7 +2,7 @@
2
2
  /// Func_void_double_std__shared_ptr_ArrayBuffer_.kt
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
  package com.margelo.nitro.net
@@ -0,0 +1,41 @@
1
+ ///
2
+ /// HttpParsedMessage.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.net
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+ import com.margelo.nitro.core.ArrayBuffer
13
+
14
+ /**
15
+ * Represents the JavaScript object/struct "HttpParsedMessage".
16
+ */
17
+ @DoNotStrip
18
+ @Keep
19
+ data class HttpParsedMessage(
20
+ @DoNotStrip
21
+ @Keep
22
+ val metadata: String,
23
+ @DoNotStrip
24
+ @Keep
25
+ val body: ArrayBuffer?
26
+ ) {
27
+ /* primary constructor */
28
+
29
+ companion object {
30
+ /**
31
+ * Constructor called from C++
32
+ */
33
+ @DoNotStrip
34
+ @Keep
35
+ @Suppress("unused")
36
+ @JvmStatic
37
+ private fun fromCpp(metadata: String, body: ArrayBuffer?): HttpParsedMessage {
38
+ return HttpParsedMessage(metadata, body)
39
+ }
40
+ }
41
+ }
@@ -2,7 +2,7 @@
2
2
  /// HybridHttpParserSpec.kt
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
  package com.margelo.nitro.net
@@ -25,32 +25,29 @@ import com.margelo.nitro.core.HybridObject
25
25
  "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
26
26
  )
27
27
  abstract class HybridHttpParserSpec: HybridObject() {
28
- @DoNotStrip
29
- private var mHybridData: HybridData = initHybrid()
30
-
31
- init {
32
- super.updateNative(mHybridData)
33
- }
28
+ // Properties
29
+
34
30
 
35
- override fun updateNative(hybridData: HybridData) {
36
- mHybridData = hybridData
37
- super.updateNative(hybridData)
38
- }
31
+ // Methods
32
+ @DoNotStrip
33
+ @Keep
34
+ abstract fun feed(data: ArrayBuffer): HttpParsedMessage
39
35
 
40
36
  // Default implementation of `HybridObject.toString()`
41
37
  override fun toString(): String {
42
38
  return "[HybridObject HttpParser]"
43
39
  }
44
40
 
45
- // Properties
46
-
47
-
48
- // Methods
41
+ // C++ backing class
49
42
  @DoNotStrip
50
43
  @Keep
51
- abstract fun feed(data: ArrayBuffer): String
52
-
53
- private external fun initHybrid(): HybridData
44
+ protected open class CxxPart(javaPart: HybridHttpParserSpec): HybridObject.CxxPart(javaPart) {
45
+ // C++ JHybridHttpParserSpec::CxxPart::initHybrid(...)
46
+ external override fun initHybrid(): HybridData
47
+ }
48
+ override fun createCxxPart(): CxxPart {
49
+ return CxxPart(this)
50
+ }
54
51
 
55
52
  companion object {
56
53
  protected const val TAG = "HybridHttpParserSpec"
@@ -2,7 +2,7 @@
2
2
  /// HybridNetDriverSpec.kt
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
  package com.margelo.nitro.net
@@ -25,23 +25,6 @@ import com.margelo.nitro.core.HybridObject
25
25
  "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
26
26
  )
27
27
  abstract class HybridNetDriverSpec: 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 NetDriver]"
43
- }
44
-
45
28
  // Properties
46
29
 
47
30
 
@@ -94,7 +77,21 @@ abstract class HybridNetDriverSpec: HybridObject() {
94
77
  @Keep
95
78
  abstract fun initWithConfig(config: NetConfig): Unit
96
79
 
97
- private external fun initHybrid(): HybridData
80
+ // Default implementation of `HybridObject.toString()`
81
+ override fun toString(): String {
82
+ return "[HybridObject NetDriver]"
83
+ }
84
+
85
+ // C++ backing class
86
+ @DoNotStrip
87
+ @Keep
88
+ protected open class CxxPart(javaPart: HybridNetDriverSpec): HybridObject.CxxPart(javaPart) {
89
+ // C++ JHybridNetDriverSpec::CxxPart::initHybrid(...)
90
+ external override fun initHybrid(): HybridData
91
+ }
92
+ override fun createCxxPart(): CxxPart {
93
+ return CxxPart(this)
94
+ }
98
95
 
99
96
  companion object {
100
97
  protected const val TAG = "HybridNetDriverSpec"
@@ -2,7 +2,7 @@
2
2
  /// HybridNetServerDriverSpec.kt
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
  package com.margelo.nitro.net
@@ -25,23 +25,6 @@ import com.margelo.nitro.core.HybridObject
25
25
  "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
26
26
  )
27
27
  abstract class HybridNetServerDriverSpec: 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 NetServerDriver]"
43
- }
44
-
45
28
  // Properties
46
29
  abstract var onEvent: (event: Double, data: ArrayBuffer) -> Unit
47
30
 
@@ -92,7 +75,21 @@ abstract class HybridNetServerDriverSpec: HybridObject() {
92
75
  @Keep
93
76
  abstract fun close(): Unit
94
77
 
95
- private external fun initHybrid(): HybridData
78
+ // Default implementation of `HybridObject.toString()`
79
+ override fun toString(): String {
80
+ return "[HybridObject NetServerDriver]"
81
+ }
82
+
83
+ // C++ backing class
84
+ @DoNotStrip
85
+ @Keep
86
+ protected open class CxxPart(javaPart: HybridNetServerDriverSpec): HybridObject.CxxPart(javaPart) {
87
+ // C++ JHybridNetServerDriverSpec::CxxPart::initHybrid(...)
88
+ external override fun initHybrid(): HybridData
89
+ }
90
+ override fun createCxxPart(): CxxPart {
91
+ return CxxPart(this)
92
+ }
96
93
 
97
94
  companion object {
98
95
  protected const val TAG = "HybridNetServerDriverSpec"
@@ -2,7 +2,7 @@
2
2
  /// HybridNetSocketDriverSpec.kt
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
  package com.margelo.nitro.net
@@ -25,23 +25,6 @@ import com.margelo.nitro.core.HybridObject
25
25
  "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
26
26
  )
27
27
  abstract class HybridNetSocketDriverSpec: 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 NetSocketDriver]"
43
- }
44
-
45
28
  // Properties
46
29
  @get:DoNotStrip
47
30
  @get:Keep
@@ -182,7 +165,21 @@ abstract class HybridNetSocketDriverSpec: HybridObject() {
182
165
  @Keep
183
166
  abstract fun getRemoteAddress(): String
184
167
 
185
- private external fun initHybrid(): HybridData
168
+ // Default implementation of `HybridObject.toString()`
169
+ override fun toString(): String {
170
+ return "[HybridObject NetSocketDriver]"
171
+ }
172
+
173
+ // C++ backing class
174
+ @DoNotStrip
175
+ @Keep
176
+ protected open class CxxPart(javaPart: HybridNetSocketDriverSpec): HybridObject.CxxPart(javaPart) {
177
+ // C++ JHybridNetSocketDriverSpec::CxxPart::initHybrid(...)
178
+ external override fun initHybrid(): HybridData
179
+ }
180
+ override fun createCxxPart(): CxxPart {
181
+ return CxxPart(this)
182
+ }
186
183
 
187
184
  companion object {
188
185
  protected const val TAG = "HybridNetSocketDriverSpec"
@@ -2,7 +2,7 @@
2
2
  /// NetConfig.kt
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
  package com.margelo.nitro.net
@@ -2,7 +2,7 @@
2
2
  /// RustCNetOnLoad.kt
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
  package com.margelo.nitro.net
@@ -2,7 +2,7 @@
2
2
  # RustCNet+autolinking.rb
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
  # This is a Ruby script that adds all files generated by Nitrogen
@@ -2,7 +2,7 @@
2
2
  /// RustCNet-Swift-Cxx-Bridge.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 "RustCNet-Swift-Cxx-Bridge.hpp"