react-native-nitro-net 0.1.5

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 (83) hide show
  1. package/README.md +133 -0
  2. package/android/CMakeLists.txt +29 -0
  3. package/android/OnLoad.cpp +6 -0
  4. package/android/build.gradle +72 -0
  5. package/android/gradle.properties +6 -0
  6. package/android/libs/arm64-v8a/librust_c_net.so +0 -0
  7. package/android/libs/armeabi-v7a/librust_c_net.so +0 -0
  8. package/android/libs/x86/librust_c_net.so +0 -0
  9. package/android/libs/x86_64/librust_c_net.so +0 -0
  10. package/android/src/main/AndroidManifest.xml +3 -0
  11. package/android/src/main/java/com/margelo/nitro/net/NitroNetPackage.java +32 -0
  12. package/cpp/HybridNetDriver.cpp +5 -0
  13. package/cpp/HybridNetDriver.hpp +42 -0
  14. package/cpp/HybridNetServerDriver.cpp +5 -0
  15. package/cpp/HybridNetServerDriver.hpp +114 -0
  16. package/cpp/HybridNetSocketDriver.cpp +6 -0
  17. package/cpp/HybridNetSocketDriver.hpp +132 -0
  18. package/cpp/NetBindings.hpp +68 -0
  19. package/cpp/NetManager.hpp +160 -0
  20. package/ios/Frameworks/RustCNet.xcframework/Info.plist +44 -0
  21. package/ios/Frameworks/RustCNet.xcframework/ios-arm64/RustCNet.framework/Info.plist +20 -0
  22. package/ios/Frameworks/RustCNet.xcframework/ios-arm64/RustCNet.framework/RustCNet +0 -0
  23. package/ios/Frameworks/RustCNet.xcframework/ios-arm64_x86_64-simulator/RustCNet.framework/Info.plist +20 -0
  24. package/ios/Frameworks/RustCNet.xcframework/ios-arm64_x86_64-simulator/RustCNet.framework/RustCNet +0 -0
  25. package/lib/Driver.d.ts +2 -0
  26. package/lib/Driver.js +5 -0
  27. package/lib/Net.nitro.d.ts +85 -0
  28. package/lib/Net.nitro.js +21 -0
  29. package/lib/index.d.ts +162 -0
  30. package/lib/index.js +781 -0
  31. package/nitrogen/generated/.gitattributes +1 -0
  32. package/nitrogen/generated/android/RustCNet+autolinking.cmake +86 -0
  33. package/nitrogen/generated/android/RustCNet+autolinking.gradle +27 -0
  34. package/nitrogen/generated/android/RustCNetOnLoad.cpp +51 -0
  35. package/nitrogen/generated/android/RustCNetOnLoad.hpp +25 -0
  36. package/nitrogen/generated/android/c++/JFunc_void_double_std__shared_ptr_ArrayBuffer_.hpp +77 -0
  37. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.cpp +74 -0
  38. package/nitrogen/generated/android/c++/JHybridNetDriverSpec.hpp +67 -0
  39. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.cpp +99 -0
  40. package/nitrogen/generated/android/c++/JHybridNetServerDriverSpec.hpp +72 -0
  41. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.cpp +127 -0
  42. package/nitrogen/generated/android/c++/JHybridNetSocketDriverSpec.hpp +79 -0
  43. package/nitrogen/generated/android/c++/JNetConfig.hpp +57 -0
  44. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/Func_void_double_std__shared_ptr_ArrayBuffer_.kt +80 -0
  45. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetDriverSpec.kt +65 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetServerDriverSpec.kt +92 -0
  47. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/HybridNetSocketDriverSpec.kt +122 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/NetConfig.kt +38 -0
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/net/RustCNetOnLoad.kt +35 -0
  50. package/nitrogen/generated/ios/RustCNet+autolinking.rb +60 -0
  51. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.cpp +75 -0
  52. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Bridge.hpp +186 -0
  53. package/nitrogen/generated/ios/RustCNet-Swift-Cxx-Umbrella.hpp +60 -0
  54. package/nitrogen/generated/ios/RustCNetAutolinking.mm +35 -0
  55. package/nitrogen/generated/ios/RustCNetAutolinking.swift +12 -0
  56. package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.cpp +11 -0
  57. package/nitrogen/generated/ios/c++/HybridNetDriverSpecSwift.hpp +100 -0
  58. package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.cpp +11 -0
  59. package/nitrogen/generated/ios/c++/HybridNetServerDriverSpecSwift.hpp +117 -0
  60. package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.cpp +11 -0
  61. package/nitrogen/generated/ios/c++/HybridNetSocketDriverSpecSwift.hpp +163 -0
  62. package/nitrogen/generated/ios/swift/Func_void_double_std__shared_ptr_ArrayBuffer_.swift +47 -0
  63. package/nitrogen/generated/ios/swift/HybridNetDriverSpec.swift +58 -0
  64. package/nitrogen/generated/ios/swift/HybridNetDriverSpec_cxx.swift +167 -0
  65. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec.swift +61 -0
  66. package/nitrogen/generated/ios/swift/HybridNetServerDriverSpec_cxx.swift +217 -0
  67. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec.swift +69 -0
  68. package/nitrogen/generated/ios/swift/HybridNetSocketDriverSpec_cxx.swift +288 -0
  69. package/nitrogen/generated/ios/swift/NetConfig.swift +36 -0
  70. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.cpp +23 -0
  71. package/nitrogen/generated/shared/c++/HybridNetDriverSpec.hpp +74 -0
  72. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.cpp +29 -0
  73. package/nitrogen/generated/shared/c++/HybridNetServerDriverSpec.hpp +72 -0
  74. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.cpp +36 -0
  75. package/nitrogen/generated/shared/c++/HybridNetSocketDriverSpec.hpp +78 -0
  76. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.cpp +32 -0
  77. package/nitrogen/generated/shared/c++/HybridNitroBufferSpec.hpp +74 -0
  78. package/nitrogen/generated/shared/c++/NetConfig.hpp +83 -0
  79. package/package.json +59 -0
  80. package/react-native-nitro-net.podspec +47 -0
  81. package/src/Driver.ts +4 -0
  82. package/src/Net.nitro.ts +85 -0
  83. package/src/index.ts +870 -0
@@ -0,0 +1,127 @@
1
+ ///
2
+ /// JHybridNetSocketDriverSpec.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 "JHybridNetSocketDriverSpec.hpp"
9
+
10
+
11
+
12
+ #include <NitroModules/ArrayBuffer.hpp>
13
+ #include <functional>
14
+ #include "JFunc_void_double_std__shared_ptr_ArrayBuffer_.hpp"
15
+ #include <NitroModules/JNICallable.hpp>
16
+ #include <NitroModules/JArrayBuffer.hpp>
17
+ #include <string>
18
+
19
+ namespace margelo::nitro::net {
20
+
21
+ jni::local_ref<JHybridNetSocketDriverSpec::jhybriddata> JHybridNetSocketDriverSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
22
+ return makeCxxInstance(jThis);
23
+ }
24
+
25
+ void JHybridNetSocketDriverSpec::registerNatives() {
26
+ registerHybrid({
27
+ makeNativeMethod("initHybrid", JHybridNetSocketDriverSpec::initHybrid),
28
+ });
29
+ }
30
+
31
+ size_t JHybridNetSocketDriverSpec::getExternalMemorySize() noexcept {
32
+ static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
33
+ return method(_javaPart);
34
+ }
35
+
36
+ void JHybridNetSocketDriverSpec::dispose() noexcept {
37
+ static const auto method = javaClassStatic()->getMethod<void()>("dispose");
38
+ method(_javaPart);
39
+ }
40
+
41
+ std::string JHybridNetSocketDriverSpec::toString() {
42
+ static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
43
+ auto javaString = method(_javaPart);
44
+ return javaString->toStdString();
45
+ }
46
+
47
+ // Properties
48
+ double JHybridNetSocketDriverSpec::getId() {
49
+ static const auto method = javaClassStatic()->getMethod<double()>("getId");
50
+ auto __result = method(_javaPart);
51
+ return __result;
52
+ }
53
+ std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)> JHybridNetSocketDriverSpec::getOnEvent() {
54
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject>()>("getOnEvent_cxx");
55
+ auto __result = method(_javaPart);
56
+ return [&]() -> std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)> {
57
+ if (__result->isInstanceOf(JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::javaClassStatic())) [[likely]] {
58
+ auto downcast = jni::static_ref_cast<JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::javaobject>(__result);
59
+ return downcast->cthis()->getFunction();
60
+ } else {
61
+ auto __resultRef = jni::make_global(__result);
62
+ return JNICallable<JFunc_void_double_std__shared_ptr_ArrayBuffer_, void(double, std::shared_ptr<ArrayBuffer>)>(std::move(__resultRef));
63
+ }
64
+ }();
65
+ }
66
+ void JHybridNetSocketDriverSpec::setOnEvent(const std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)>& onEvent) {
67
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double_std__shared_ptr_ArrayBuffer_::javaobject> /* onEvent */)>("setOnEvent_cxx");
68
+ method(_javaPart, JFunc_void_double_std__shared_ptr_ArrayBuffer__cxx::fromCpp(onEvent));
69
+ }
70
+
71
+ // Methods
72
+ void JHybridNetSocketDriverSpec::connect(const std::string& host, double port) {
73
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* host */, double /* port */)>("connect");
74
+ method(_javaPart, jni::make_jstring(host), port);
75
+ }
76
+ void JHybridNetSocketDriverSpec::connectUnix(const std::string& path) {
77
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */)>("connectUnix");
78
+ method(_javaPart, jni::make_jstring(path));
79
+ }
80
+ void JHybridNetSocketDriverSpec::write(const std::shared_ptr<ArrayBuffer>& data) {
81
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JArrayBuffer::javaobject> /* data */)>("write");
82
+ method(_javaPart, JArrayBuffer::wrap(data));
83
+ }
84
+ void JHybridNetSocketDriverSpec::pause() {
85
+ static const auto method = javaClassStatic()->getMethod<void()>("pause");
86
+ method(_javaPart);
87
+ }
88
+ void JHybridNetSocketDriverSpec::resume() {
89
+ static const auto method = javaClassStatic()->getMethod<void()>("resume");
90
+ method(_javaPart);
91
+ }
92
+ void JHybridNetSocketDriverSpec::shutdown() {
93
+ static const auto method = javaClassStatic()->getMethod<void()>("shutdown");
94
+ method(_javaPart);
95
+ }
96
+ void JHybridNetSocketDriverSpec::setTimeout(double timeout) {
97
+ static const auto method = javaClassStatic()->getMethod<void(double /* timeout */)>("setTimeout");
98
+ method(_javaPart, timeout);
99
+ }
100
+ void JHybridNetSocketDriverSpec::destroy() {
101
+ static const auto method = javaClassStatic()->getMethod<void()>("destroy");
102
+ method(_javaPart);
103
+ }
104
+ void JHybridNetSocketDriverSpec::resetAndDestroy() {
105
+ static const auto method = javaClassStatic()->getMethod<void()>("resetAndDestroy");
106
+ method(_javaPart);
107
+ }
108
+ void JHybridNetSocketDriverSpec::setNoDelay(bool enable) {
109
+ static const auto method = javaClassStatic()->getMethod<void(jboolean /* enable */)>("setNoDelay");
110
+ method(_javaPart, enable);
111
+ }
112
+ void JHybridNetSocketDriverSpec::setKeepAlive(bool enable, double delay) {
113
+ static const auto method = javaClassStatic()->getMethod<void(jboolean /* enable */, double /* delay */)>("setKeepAlive");
114
+ method(_javaPart, enable, delay);
115
+ }
116
+ std::string JHybridNetSocketDriverSpec::getLocalAddress() {
117
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getLocalAddress");
118
+ auto __result = method(_javaPart);
119
+ return __result->toStdString();
120
+ }
121
+ std::string JHybridNetSocketDriverSpec::getRemoteAddress() {
122
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getRemoteAddress");
123
+ auto __result = method(_javaPart);
124
+ return __result->toStdString();
125
+ }
126
+
127
+ } // namespace margelo::nitro::net
@@ -0,0 +1,79 @@
1
+ ///
2
+ /// HybridNetSocketDriverSpec.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 "HybridNetSocketDriverSpec.hpp"
13
+
14
+
15
+
16
+
17
+ namespace margelo::nitro::net {
18
+
19
+ using namespace facebook;
20
+
21
+ class JHybridNetSocketDriverSpec: public jni::HybridClass<JHybridNetSocketDriverSpec, JHybridObject>,
22
+ public virtual HybridNetSocketDriverSpec {
23
+ 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)) {}
34
+
35
+ public:
36
+ ~JHybridNetSocketDriverSpec() 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<JHybridNetSocketDriverSpec::javaobject>& getJavaPart() const noexcept {
48
+ return _javaPart;
49
+ }
50
+
51
+ public:
52
+ // Properties
53
+ double getId() override;
54
+ std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)> getOnEvent() override;
55
+ void setOnEvent(const std::function<void(double /* event */, const std::shared_ptr<ArrayBuffer>& /* data */)>& onEvent) override;
56
+
57
+ public:
58
+ // Methods
59
+ void connect(const std::string& host, double port) override;
60
+ void connectUnix(const std::string& path) override;
61
+ void write(const std::shared_ptr<ArrayBuffer>& data) override;
62
+ void pause() override;
63
+ void resume() override;
64
+ void shutdown() override;
65
+ void setTimeout(double timeout) override;
66
+ void destroy() override;
67
+ void resetAndDestroy() override;
68
+ void setNoDelay(bool enable) override;
69
+ void setKeepAlive(bool enable, double delay) override;
70
+ std::string getLocalAddress() override;
71
+ std::string getRemoteAddress() override;
72
+
73
+ private:
74
+ friend HybridBase;
75
+ using HybridBase::HybridBase;
76
+ jni::global_ref<JHybridNetSocketDriverSpec::javaobject> _javaPart;
77
+ };
78
+
79
+ } // namespace margelo::nitro::net
@@ -0,0 +1,57 @@
1
+ ///
2
+ /// JNetConfig.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "NetConfig.hpp"
12
+
13
+ #include <optional>
14
+
15
+ namespace margelo::nitro::net {
16
+
17
+ using namespace facebook;
18
+
19
+ /**
20
+ * The C++ JNI bridge between the C++ struct "NetConfig" and the the Kotlin data class "NetConfig".
21
+ */
22
+ struct JNetConfig final: public jni::JavaClass<JNetConfig> {
23
+ public:
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/net/NetConfig;";
25
+
26
+ public:
27
+ /**
28
+ * Convert this Java/Kotlin-based struct to the C++ struct NetConfig by copying all values to C++.
29
+ */
30
+ [[maybe_unused]]
31
+ [[nodiscard]]
32
+ NetConfig toCpp() const {
33
+ static const auto clazz = javaClassStatic();
34
+ static const auto fieldWorkerThreads = clazz->getField<jni::JDouble>("workerThreads");
35
+ jni::local_ref<jni::JDouble> workerThreads = this->getFieldValue(fieldWorkerThreads);
36
+ return NetConfig(
37
+ workerThreads != nullptr ? std::make_optional(workerThreads->value()) : std::nullopt
38
+ );
39
+ }
40
+
41
+ public:
42
+ /**
43
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
44
+ */
45
+ [[maybe_unused]]
46
+ static jni::local_ref<JNetConfig::javaobject> fromCpp(const NetConfig& value) {
47
+ using JSignature = JNetConfig(jni::alias_ref<jni::JDouble>);
48
+ static const auto clazz = javaClassStatic();
49
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
50
+ return create(
51
+ clazz,
52
+ value.workerThreads.has_value() ? jni::JDouble::valueOf(value.workerThreads.value()) : nullptr
53
+ );
54
+ }
55
+ };
56
+
57
+ } // namespace margelo::nitro::net
@@ -0,0 +1,80 @@
1
+ ///
2
+ /// Func_void_double_std__shared_ptr_ArrayBuffer_.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 dalvik.annotation.optimization.FastNative
14
+ import com.margelo.nitro.core.ArrayBuffer
15
+
16
+ /**
17
+ * Represents the JavaScript callback `(event: number, data: array-buffer) => void`.
18
+ * This can be either implemented in C++ (in which case it might be a callback coming from JS),
19
+ * or in Kotlin/Java (in which case it is a native callback).
20
+ */
21
+ @DoNotStrip
22
+ @Keep
23
+ @Suppress("ClassName", "RedundantUnitReturnType")
24
+ fun interface Func_void_double_std__shared_ptr_ArrayBuffer_: (Double, ArrayBuffer) -> Unit {
25
+ /**
26
+ * Call the given JS callback.
27
+ * @throws Throwable if the JS function itself throws an error, or if the JS function/runtime has already been deleted.
28
+ */
29
+ @DoNotStrip
30
+ @Keep
31
+ override fun invoke(event: Double, data: ArrayBuffer): Unit
32
+ }
33
+
34
+ /**
35
+ * Represents the JavaScript callback `(event: number, data: array-buffer) => void`.
36
+ * This is implemented in C++, via a `std::function<...>`.
37
+ * The callback might be coming from JS.
38
+ */
39
+ @DoNotStrip
40
+ @Keep
41
+ @Suppress(
42
+ "KotlinJniMissingFunction", "unused",
43
+ "RedundantSuppression", "RedundantUnitReturnType", "FunctionName",
44
+ "ConvertSecondaryConstructorToPrimary", "ClassName", "LocalVariableName",
45
+ )
46
+ class Func_void_double_std__shared_ptr_ArrayBuffer__cxx: Func_void_double_std__shared_ptr_ArrayBuffer_ {
47
+ @DoNotStrip
48
+ @Keep
49
+ private val mHybridData: HybridData
50
+
51
+ @DoNotStrip
52
+ @Keep
53
+ private constructor(hybridData: HybridData) {
54
+ mHybridData = hybridData
55
+ }
56
+
57
+ @DoNotStrip
58
+ @Keep
59
+ override fun invoke(event: Double, data: ArrayBuffer): Unit
60
+ = invoke_cxx(event,data)
61
+
62
+ @FastNative
63
+ private external fun invoke_cxx(event: Double, data: ArrayBuffer): Unit
64
+ }
65
+
66
+ /**
67
+ * Represents the JavaScript callback `(event: number, data: array-buffer) => void`.
68
+ * This is implemented in Java/Kotlin, via a `(Double, ArrayBuffer) -> Unit`.
69
+ * The callback is always coming from native.
70
+ */
71
+ @DoNotStrip
72
+ @Keep
73
+ @Suppress("ClassName", "RedundantUnitReturnType", "unused")
74
+ class Func_void_double_std__shared_ptr_ArrayBuffer__java(private val function: (Double, ArrayBuffer) -> Unit): Func_void_double_std__shared_ptr_ArrayBuffer_ {
75
+ @DoNotStrip
76
+ @Keep
77
+ override fun invoke(event: Double, data: ArrayBuffer): Unit {
78
+ return this.function(event, data)
79
+ }
80
+ }
@@ -0,0 +1,65 @@
1
+ ///
2
+ /// HybridNetDriverSpec.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.HybridObject
14
+
15
+ /**
16
+ * A Kotlin class representing the NetDriver HybridObject.
17
+ * Implement this abstract class to create Kotlin-based instances of NetDriver.
18
+ */
19
+ @DoNotStrip
20
+ @Keep
21
+ @Suppress(
22
+ "KotlinJniMissingFunction", "unused",
23
+ "RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet",
24
+ "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
25
+ )
26
+ abstract class HybridNetDriverSpec: HybridObject() {
27
+ @DoNotStrip
28
+ private var mHybridData: HybridData = initHybrid()
29
+
30
+ init {
31
+ super.updateNative(mHybridData)
32
+ }
33
+
34
+ override fun updateNative(hybridData: HybridData) {
35
+ mHybridData = hybridData
36
+ super.updateNative(hybridData)
37
+ }
38
+
39
+ // Default implementation of `HybridObject.toString()`
40
+ override fun toString(): String {
41
+ return "[HybridObject NetDriver]"
42
+ }
43
+
44
+ // Properties
45
+
46
+
47
+ // Methods
48
+ @DoNotStrip
49
+ @Keep
50
+ abstract fun createSocket(id: String?): HybridNetSocketDriverSpec
51
+
52
+ @DoNotStrip
53
+ @Keep
54
+ abstract fun createServer(): HybridNetServerDriverSpec
55
+
56
+ @DoNotStrip
57
+ @Keep
58
+ abstract fun initWithConfig(config: NetConfig): Unit
59
+
60
+ private external fun initHybrid(): HybridData
61
+
62
+ companion object {
63
+ protected const val TAG = "HybridNetDriverSpec"
64
+ }
65
+ }
@@ -0,0 +1,92 @@
1
+ ///
2
+ /// HybridNetServerDriverSpec.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 NetServerDriver HybridObject.
18
+ * Implement this abstract class to create Kotlin-based instances of NetServerDriver.
19
+ */
20
+ @DoNotStrip
21
+ @Keep
22
+ @Suppress(
23
+ "KotlinJniMissingFunction", "unused",
24
+ "RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet",
25
+ "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
26
+ )
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
+ // Properties
46
+ abstract var onEvent: (event: Double, data: ArrayBuffer) -> Unit
47
+
48
+ private var onEvent_cxx: Func_void_double_std__shared_ptr_ArrayBuffer_
49
+ @Keep
50
+ @DoNotStrip
51
+ get() {
52
+ return Func_void_double_std__shared_ptr_ArrayBuffer__java(onEvent)
53
+ }
54
+ @Keep
55
+ @DoNotStrip
56
+ set(value) {
57
+ onEvent = value
58
+ }
59
+
60
+ @get:DoNotStrip
61
+ @get:Keep
62
+ @set:DoNotStrip
63
+ @set:Keep
64
+ abstract var maxConnections: Double
65
+
66
+ // Methods
67
+ @DoNotStrip
68
+ @Keep
69
+ abstract fun listen(port: Double, backlog: Double?, ipv6Only: Boolean?, reusePort: Boolean?): Unit
70
+
71
+ @DoNotStrip
72
+ @Keep
73
+ abstract fun listenUnix(path: String, backlog: Double?): Unit
74
+
75
+ @DoNotStrip
76
+ @Keep
77
+ abstract fun listenHandle(fd: Double, backlog: Double?): Unit
78
+
79
+ @DoNotStrip
80
+ @Keep
81
+ abstract fun getLocalAddress(): String
82
+
83
+ @DoNotStrip
84
+ @Keep
85
+ abstract fun close(): Unit
86
+
87
+ private external fun initHybrid(): HybridData
88
+
89
+ companion object {
90
+ protected const val TAG = "HybridNetServerDriverSpec"
91
+ }
92
+ }
@@ -0,0 +1,122 @@
1
+ ///
2
+ /// HybridNetSocketDriverSpec.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 NetSocketDriver HybridObject.
18
+ * Implement this abstract class to create Kotlin-based instances of NetSocketDriver.
19
+ */
20
+ @DoNotStrip
21
+ @Keep
22
+ @Suppress(
23
+ "KotlinJniMissingFunction", "unused",
24
+ "RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet",
25
+ "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
26
+ )
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
+ // Properties
46
+ @get:DoNotStrip
47
+ @get:Keep
48
+ abstract val id: Double
49
+
50
+ abstract var onEvent: (event: Double, data: ArrayBuffer) -> Unit
51
+
52
+ private var onEvent_cxx: Func_void_double_std__shared_ptr_ArrayBuffer_
53
+ @Keep
54
+ @DoNotStrip
55
+ get() {
56
+ return Func_void_double_std__shared_ptr_ArrayBuffer__java(onEvent)
57
+ }
58
+ @Keep
59
+ @DoNotStrip
60
+ set(value) {
61
+ onEvent = value
62
+ }
63
+
64
+ // Methods
65
+ @DoNotStrip
66
+ @Keep
67
+ abstract fun connect(host: String, port: Double): Unit
68
+
69
+ @DoNotStrip
70
+ @Keep
71
+ abstract fun connectUnix(path: String): Unit
72
+
73
+ @DoNotStrip
74
+ @Keep
75
+ abstract fun write(data: ArrayBuffer): Unit
76
+
77
+ @DoNotStrip
78
+ @Keep
79
+ abstract fun pause(): Unit
80
+
81
+ @DoNotStrip
82
+ @Keep
83
+ abstract fun resume(): Unit
84
+
85
+ @DoNotStrip
86
+ @Keep
87
+ abstract fun shutdown(): Unit
88
+
89
+ @DoNotStrip
90
+ @Keep
91
+ abstract fun setTimeout(timeout: Double): Unit
92
+
93
+ @DoNotStrip
94
+ @Keep
95
+ abstract fun destroy(): Unit
96
+
97
+ @DoNotStrip
98
+ @Keep
99
+ abstract fun resetAndDestroy(): Unit
100
+
101
+ @DoNotStrip
102
+ @Keep
103
+ abstract fun setNoDelay(enable: Boolean): Unit
104
+
105
+ @DoNotStrip
106
+ @Keep
107
+ abstract fun setKeepAlive(enable: Boolean, delay: Double): Unit
108
+
109
+ @DoNotStrip
110
+ @Keep
111
+ abstract fun getLocalAddress(): String
112
+
113
+ @DoNotStrip
114
+ @Keep
115
+ abstract fun getRemoteAddress(): String
116
+
117
+ private external fun initHybrid(): HybridData
118
+
119
+ companion object {
120
+ protected const val TAG = "HybridNetSocketDriverSpec"
121
+ }
122
+ }
@@ -0,0 +1,38 @@
1
+ ///
2
+ /// NetConfig.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.proguard.annotations.DoNotStrip
12
+
13
+
14
+ /**
15
+ * Represents the JavaScript object/struct "NetConfig".
16
+ */
17
+ @DoNotStrip
18
+ @Keep
19
+ data class NetConfig(
20
+ @DoNotStrip
21
+ @Keep
22
+ val workerThreads: Double?
23
+ ) {
24
+ /* primary constructor */
25
+
26
+ companion object {
27
+ /**
28
+ * Constructor called from C++
29
+ */
30
+ @DoNotStrip
31
+ @Keep
32
+ @Suppress("unused")
33
+ @JvmStatic
34
+ private fun fromCpp(workerThreads: Double?): NetConfig {
35
+ return NetConfig(workerThreads)
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,35 @@
1
+ ///
2
+ /// RustCNetOnLoad.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 android.util.Log
11
+
12
+ internal class RustCNetOnLoad {
13
+ companion object {
14
+ private const val TAG = "RustCNetOnLoad"
15
+ private var didLoad = false
16
+ /**
17
+ * Initializes the native part of "RustCNet".
18
+ * This method is idempotent and can be called more than once.
19
+ */
20
+ @JvmStatic
21
+ fun initializeNative() {
22
+ if (didLoad) return
23
+ try {
24
+ Log.i(TAG, "Loading RustCNet C++ library...")
25
+ System.loadLibrary("RustCNet")
26
+ Log.i(TAG, "Successfully loaded RustCNet C++ library!")
27
+ didLoad = true
28
+ } catch (e: Error) {
29
+ Log.e(TAG, "Failed to load RustCNet C++ library! Is it properly installed and linked? " +
30
+ "Is the name correct? (see `CMakeLists.txt`, at `add_library(...)`)", e)
31
+ throw e
32
+ }
33
+ }
34
+ }
35
+ }