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,160 @@
1
+ #pragma once
2
+
3
+ #include "NetBindings.hpp"
4
+ #include <functional>
5
+ #include <memory>
6
+ #include <shared_mutex>
7
+ #include <string>
8
+ #include <unordered_map>
9
+ #include <vector>
10
+
11
+ #define NM_TAG "NetManager"
12
+
13
+ #ifdef __ANDROID__
14
+ #include <android/log.h>
15
+ #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, NM_TAG, __VA_ARGS__)
16
+ #define LOGW(...) __android_log_print(ANDROID_LOG_WARN, NM_TAG, __VA_ARGS__)
17
+ #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, NM_TAG, __VA_ARGS__)
18
+ #else
19
+ #include <cstdio>
20
+ #define LOGI(...) \
21
+ printf("[" NM_TAG "] " __VA_ARGS__); \
22
+ printf("\n")
23
+ #define LOGW(...) \
24
+ printf("[" NM_TAG "] WARN: " __VA_ARGS__); \
25
+ printf("\n")
26
+ #define LOGE(...) \
27
+ printf("[" NM_TAG "] ERROR: " __VA_ARGS__); \
28
+ printf("\n")
29
+ #endif
30
+
31
+ namespace margelo::nitro::net {
32
+
33
+ class NetManager {
34
+ public:
35
+ using EventHandler =
36
+ std::function<void(int eventType, const uint8_t *data, size_t len)>;
37
+
38
+ static NetManager &shared() {
39
+ static NetManager instance;
40
+ return instance;
41
+ }
42
+
43
+ NetManager() {
44
+ LOGI("Initializing NetManager with default config...");
45
+ initializeRuntime(0); // 0 = use default (CPU core count)
46
+ }
47
+
48
+ /// Initialize with custom worker thread count
49
+ /// Must be called before any other operations, or the config will be ignored
50
+ void initWithConfig(uint32_t workerThreads) {
51
+ if (!_initialized) {
52
+ LOGI("Initializing NetManager with %u worker threads...", workerThreads);
53
+ initializeRuntime(workerThreads);
54
+ } else {
55
+ LOGW("NetManager already initialized, config ignored. Call "
56
+ "initWithConfig before any socket/server operations.");
57
+ }
58
+ }
59
+
60
+ private:
61
+ void initializeRuntime(uint32_t workerThreads) {
62
+ if (_initialized)
63
+ return;
64
+ _initialized = true;
65
+
66
+ if (workerThreads > 0) {
67
+ net_init_with_config(
68
+ [](uint32_t id, int event_type, const uint8_t *data, size_t len,
69
+ void *context) {
70
+ auto mgr = static_cast<NetManager *>(context);
71
+ mgr->dispatch(id, event_type, data, len);
72
+ },
73
+ this, workerThreads);
74
+ } else {
75
+ net_init(
76
+ [](uint32_t id, int event_type, const uint8_t *data, size_t len,
77
+ void *context) {
78
+ auto mgr = static_cast<NetManager *>(context);
79
+ mgr->dispatch(id, event_type, data, len);
80
+ },
81
+ this);
82
+ }
83
+ }
84
+
85
+ bool _initialized = false;
86
+
87
+ public:
88
+ void registerHandler(uint32_t id, EventHandler handler) {
89
+ LOGI("Registering handler for ID %u", id);
90
+ std::unique_lock lock(_mutex);
91
+ _handlers[id] = handler;
92
+ }
93
+
94
+ void unregisterHandler(uint32_t id) {
95
+ LOGI("Unregistering handler for ID %u", id);
96
+ std::unique_lock lock(_mutex);
97
+ _handlers.erase(id);
98
+ }
99
+
100
+ private:
101
+ void dispatch(uint32_t id, int eventType, const uint8_t *data, size_t len) {
102
+ // Log all events for debugging
103
+ const char *eventName = "UNKNOWN";
104
+ switch (eventType) {
105
+ case 1:
106
+ eventName = "CONNECT";
107
+ break;
108
+ case 2:
109
+ eventName = "DATA";
110
+ break;
111
+ case 3:
112
+ eventName = "ERROR";
113
+ break;
114
+ case 4:
115
+ eventName = "CLOSE";
116
+ break;
117
+ case 5:
118
+ eventName = "DRAIN";
119
+ break;
120
+ case 6:
121
+ eventName = "CONNECTION";
122
+ break;
123
+ case 7:
124
+ eventName = "TIMEOUT";
125
+ break;
126
+ case 8:
127
+ eventName = "LOOKUP";
128
+ break;
129
+ case 9:
130
+ eventName = "DEBUG";
131
+ break;
132
+ }
133
+
134
+ LOGI("dispatch: id=%u, event=%s(%d), len=%zu", id, eventName, eventType,
135
+ len);
136
+
137
+ // Copy handler outside of lock to avoid deadlock
138
+ // (handler may call unregisterHandler which needs unique_lock)
139
+ EventHandler handler;
140
+ {
141
+ std::shared_lock lock(_mutex);
142
+ auto it = _handlers.find(id);
143
+ if (it != _handlers.end()) {
144
+ handler = it->second;
145
+ }
146
+ }
147
+
148
+ // Call handler outside of lock
149
+ if (handler) {
150
+ handler(eventType, data, len);
151
+ } else {
152
+ LOGW("No handler found for id=%u, event=%s", id, eventName);
153
+ }
154
+ }
155
+
156
+ std::shared_mutex _mutex;
157
+ std::unordered_map<uint32_t, EventHandler> _handlers;
158
+ };
159
+
160
+ } // namespace margelo::nitro::net
@@ -0,0 +1,44 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>AvailableLibraries</key>
6
+ <array>
7
+ <dict>
8
+ <key>BinaryPath</key>
9
+ <string>RustCNet.framework/RustCNet</string>
10
+ <key>LibraryIdentifier</key>
11
+ <string>ios-arm64_x86_64-simulator</string>
12
+ <key>LibraryPath</key>
13
+ <string>RustCNet.framework</string>
14
+ <key>SupportedArchitectures</key>
15
+ <array>
16
+ <string>arm64</string>
17
+ <string>x86_64</string>
18
+ </array>
19
+ <key>SupportedPlatform</key>
20
+ <string>ios</string>
21
+ <key>SupportedPlatformVariant</key>
22
+ <string>simulator</string>
23
+ </dict>
24
+ <dict>
25
+ <key>BinaryPath</key>
26
+ <string>RustCNet.framework/RustCNet</string>
27
+ <key>LibraryIdentifier</key>
28
+ <string>ios-arm64</string>
29
+ <key>LibraryPath</key>
30
+ <string>RustCNet.framework</string>
31
+ <key>SupportedArchitectures</key>
32
+ <array>
33
+ <string>arm64</string>
34
+ </array>
35
+ <key>SupportedPlatform</key>
36
+ <string>ios</string>
37
+ </dict>
38
+ </array>
39
+ <key>CFBundlePackageType</key>
40
+ <string>XFWK</string>
41
+ <key>XCFrameworkFormatVersion</key>
42
+ <string>1.0</string>
43
+ </dict>
44
+ </plist>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleExecutable</key>
6
+ <string>RustCNet</string>
7
+ <key>CFBundleIdentifier</key>
8
+ <string>com.iwater.RustCNet</string>
9
+ <key>CFBundleName</key>
10
+ <string>RustCNet</string>
11
+ <key>CFBundlePackageType</key>
12
+ <string>FMWK</string>
13
+ <key>CFBundleVersion</key>
14
+ <string>1.0</string>
15
+ <key>CFBundleShortVersionString</key>
16
+ <string>1.0</string>
17
+ <key>MinimumOSVersion</key>
18
+ <string>13.0</string>
19
+ </dict>
20
+ </plist>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleExecutable</key>
6
+ <string>RustCNet</string>
7
+ <key>CFBundleIdentifier</key>
8
+ <string>com.iwater.RustCNet</string>
9
+ <key>CFBundleName</key>
10
+ <string>RustCNet</string>
11
+ <key>CFBundlePackageType</key>
12
+ <string>FMWK</string>
13
+ <key>CFBundleVersion</key>
14
+ <string>1.0</string>
15
+ <key>CFBundleShortVersionString</key>
16
+ <string>1.0</string>
17
+ <key>MinimumOSVersion</key>
18
+ <string>13.0</string>
19
+ </dict>
20
+ </plist>
@@ -0,0 +1,2 @@
1
+ import type { NetDriver } from './Net.nitro';
2
+ export declare const Driver: NetDriver;
package/lib/Driver.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Driver = void 0;
4
+ const react_native_nitro_modules_1 = require("react-native-nitro-modules");
5
+ exports.Driver = react_native_nitro_modules_1.NitroModules.createHybridObject('NetDriver');
@@ -0,0 +1,85 @@
1
+ import { type HybridObject } from 'react-native-nitro-modules';
2
+ export type NetEventType = 'connect' | 'data' | 'error' | 'close' | 'connection';
3
+ export interface NetEvent {
4
+ type: NetEventType;
5
+ data?: ArrayBuffer;
6
+ error?: string;
7
+ id?: string;
8
+ }
9
+ export type NetEventHandler = (event: NetEvent) => void;
10
+ export declare enum NetSocketEvent {
11
+ CONNECT = 1,
12
+ DATA = 2,
13
+ ERROR = 3,
14
+ CLOSE = 4,
15
+ DRAIN = 5,
16
+ TIMEOUT = 7,
17
+ LOOKUP = 8,
18
+ DEBUG = 9
19
+ }
20
+ export interface NetSocketDriver extends HybridObject<{
21
+ ios: 'swift';
22
+ android: 'kotlin';
23
+ }> {
24
+ readonly id: number;
25
+ connect(host: string, port: number): void;
26
+ connectUnix(path: string): void;
27
+ write(data: ArrayBuffer): void;
28
+ pause(): void;
29
+ resume(): void;
30
+ shutdown(): void;
31
+ setTimeout(timeout: number): void;
32
+ destroy(): void;
33
+ resetAndDestroy(): void;
34
+ setNoDelay(enable: boolean): void;
35
+ setKeepAlive(enable: boolean, delay: number): void;
36
+ getLocalAddress(): string;
37
+ getRemoteAddress(): string;
38
+ onEvent: (event: number, data: ArrayBuffer) => void;
39
+ }
40
+ export declare enum NetServerEvent {
41
+ CONNECTION = 6,
42
+ ERROR = 3,
43
+ CLOSE = 4,
44
+ DEBUG = 9
45
+ }
46
+ export interface NetServerDriver extends HybridObject<{
47
+ ios: 'swift';
48
+ android: 'kotlin';
49
+ }> {
50
+ onEvent: (event: number, data: ArrayBuffer) => void;
51
+ listen(port: number, backlog?: number, ipv6Only?: boolean, reusePort?: boolean): void;
52
+ listenUnix(path: string, backlog?: number): void;
53
+ /**
54
+ * Listen on an existing file descriptor (handle)
55
+ * @param fd File descriptor of an already-bound TCP listener
56
+ * @param backlog Listen backlog (optional, defaults to 128)
57
+ */
58
+ listenHandle(fd: number, backlog?: number): void;
59
+ getLocalAddress(): string;
60
+ maxConnections: number;
61
+ close(): void;
62
+ }
63
+ /**
64
+ * Runtime configuration for the network module
65
+ */
66
+ export interface NetConfig {
67
+ /**
68
+ * Number of worker threads for the async runtime
69
+ * 0 = use CPU core count (default)
70
+ */
71
+ workerThreads?: number;
72
+ }
73
+ export interface NetDriver extends HybridObject<{
74
+ ios: 'swift';
75
+ android: 'kotlin';
76
+ }> {
77
+ createSocket(id?: string): NetSocketDriver;
78
+ createServer(): NetServerDriver;
79
+ /**
80
+ * Initialize the network module with custom configuration
81
+ * Must be called before any other network operations
82
+ * @param config Configuration options
83
+ */
84
+ initWithConfig(config: NetConfig): void;
85
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NetServerEvent = exports.NetSocketEvent = void 0;
4
+ var NetSocketEvent;
5
+ (function (NetSocketEvent) {
6
+ NetSocketEvent[NetSocketEvent["CONNECT"] = 1] = "CONNECT";
7
+ NetSocketEvent[NetSocketEvent["DATA"] = 2] = "DATA";
8
+ NetSocketEvent[NetSocketEvent["ERROR"] = 3] = "ERROR";
9
+ NetSocketEvent[NetSocketEvent["CLOSE"] = 4] = "CLOSE";
10
+ NetSocketEvent[NetSocketEvent["DRAIN"] = 5] = "DRAIN";
11
+ NetSocketEvent[NetSocketEvent["TIMEOUT"] = 7] = "TIMEOUT";
12
+ NetSocketEvent[NetSocketEvent["LOOKUP"] = 8] = "LOOKUP";
13
+ NetSocketEvent[NetSocketEvent["DEBUG"] = 9] = "DEBUG";
14
+ })(NetSocketEvent || (exports.NetSocketEvent = NetSocketEvent = {}));
15
+ var NetServerEvent;
16
+ (function (NetServerEvent) {
17
+ NetServerEvent[NetServerEvent["CONNECTION"] = 6] = "CONNECTION";
18
+ NetServerEvent[NetServerEvent["ERROR"] = 3] = "ERROR";
19
+ NetServerEvent[NetServerEvent["CLOSE"] = 4] = "CLOSE";
20
+ NetServerEvent[NetServerEvent["DEBUG"] = 9] = "DEBUG";
21
+ })(NetServerEvent || (exports.NetServerEvent = NetServerEvent = {}));
package/lib/index.d.ts ADDED
@@ -0,0 +1,162 @@
1
+ import { Duplex, DuplexOptions } from 'readable-stream';
2
+ import { EventEmitter } from 'eventemitter3';
3
+ import type { NetSocketDriver, NetConfig } from './Net.nitro';
4
+ declare function isIP(input: string): number;
5
+ declare function isIPv4(input: string): boolean;
6
+ declare function isIPv6(input: string): boolean;
7
+ declare function setVerbose(enabled: boolean): void;
8
+ declare function getDefaultAutoSelectFamily(): number;
9
+ declare function setDefaultAutoSelectFamily(family: number): void;
10
+ /**
11
+ * Initialize the network module with custom configuration.
12
+ * Must be called before any socket/server operations, or the config will be ignored.
13
+ *
14
+ * @param config Configuration options
15
+ * @param config.workerThreads Number of worker threads (0 = use CPU core count)
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import { initWithConfig } from 'react-native-nitro-net';
20
+ *
21
+ * // Initialize with 4 worker threads
22
+ * initWithConfig({ workerThreads: 4 });
23
+ * ```
24
+ */
25
+ declare function initWithConfig(config: NetConfig): void;
26
+ export declare class SocketAddress {
27
+ readonly address: string;
28
+ readonly family: 'ipv4' | 'ipv6';
29
+ readonly port: number;
30
+ readonly flowlabel: number;
31
+ constructor(options: {
32
+ address: string;
33
+ family?: 'ipv4' | 'ipv6';
34
+ port: number;
35
+ flowlabel?: number;
36
+ });
37
+ }
38
+ export declare class BlockList {
39
+ private _rules;
40
+ addAddress(address: string, family?: 'ipv4' | 'ipv6'): void;
41
+ addRange(start: string, end: string, family?: 'ipv4' | 'ipv6'): void;
42
+ addSubnet(net: string, prefix: number, family?: 'ipv4' | 'ipv6'): void;
43
+ check(address: string, family?: 'ipv4' | 'ipv6'): boolean;
44
+ }
45
+ export interface SocketOptions extends DuplexOptions {
46
+ fd?: any;
47
+ allowHalfOpen?: boolean;
48
+ readable?: boolean;
49
+ writable?: boolean;
50
+ path?: string;
51
+ socketDriver?: NetSocketDriver;
52
+ remoteFamily?: string;
53
+ }
54
+ export declare class Socket extends Duplex {
55
+ private _driver;
56
+ connecting: boolean;
57
+ private _connected;
58
+ private _hadError;
59
+ remoteAddress?: string;
60
+ remotePort?: number;
61
+ remoteFamily?: string;
62
+ localAddress?: string;
63
+ localPort?: number;
64
+ bytesRead: number;
65
+ bytesWritten: number;
66
+ autoSelectFamilyAttemptedAddresses: string[];
67
+ private _autoSelectFamily;
68
+ get localFamily(): string;
69
+ get readyState(): string;
70
+ get pending(): boolean;
71
+ constructor(options?: SocketOptions);
72
+ on(event: string | symbol, listener: (...args: any[]) => void): this;
73
+ private _setupEvents;
74
+ private _updateAddresses;
75
+ address(): {
76
+ port: number;
77
+ family: string;
78
+ address: string;
79
+ } | null;
80
+ connect(options: any, connectionListener?: () => void): this;
81
+ private _connect;
82
+ private _connectUnix;
83
+ end(cb?: () => void): this;
84
+ end(chunk: any, cb?: () => void): this;
85
+ end(chunk: any, encoding: string, cb?: () => void): this;
86
+ _write(chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
87
+ _read(size: number): void;
88
+ _final(callback: (error?: Error | null) => void): void;
89
+ destroy(reason?: Error): this;
90
+ _destroy(err: Error | null, callback: (error: Error | null) => void): void;
91
+ setTimeout(msecs: number, callback?: () => void): this;
92
+ /**
93
+ * Pause the reading of data. That is, 'data' events will not be emitted.
94
+ * Useful to throttle back an upload.
95
+ */
96
+ pause(): this;
97
+ /**
98
+ * Resume reading after a call to pause().
99
+ */
100
+ resume(): this;
101
+ /**
102
+ * Enable/disable the use of Nagle's algorithm.
103
+ */
104
+ setNoDelay(noDelay?: boolean): this;
105
+ setKeepAlive(enable?: boolean, initialDelay?: number): this;
106
+ ref(): this;
107
+ unref(): this;
108
+ /**
109
+ * Set the encoding for the socket as a Readable Stream.
110
+ * Use 'utf8', 'hex', etc.
111
+ */
112
+ setEncoding(encoding: BufferEncoding): this;
113
+ get timeout(): number | undefined;
114
+ get bufferSize(): number;
115
+ resetAndDestroy(): this;
116
+ }
117
+ export declare class Server extends EventEmitter {
118
+ private _driver;
119
+ private _sockets;
120
+ private _connections;
121
+ private _maxConnections;
122
+ private _dropMaxConnection;
123
+ get maxConnections(): number;
124
+ set maxConnections(value: number);
125
+ get dropMaxConnection(): boolean;
126
+ set dropMaxConnection(value: boolean);
127
+ get listening(): boolean;
128
+ constructor(options?: any, connectionListener?: (socket: Socket) => void);
129
+ ref(): this;
130
+ unref(): this;
131
+ [Symbol.asyncDispose](): Promise<void>;
132
+ listen(port?: any, host?: any, backlog?: any, callback?: any): this;
133
+ close(callback?: (err?: Error) => void): this;
134
+ address(): {
135
+ port: number;
136
+ family: string;
137
+ address: string;
138
+ } | null;
139
+ getConnections(cb: (err: Error | null, count: number) => void): void;
140
+ }
141
+ export declare function createConnection(options: any, connectionListener?: () => void): Socket;
142
+ export declare const connect: typeof createConnection;
143
+ export declare function createServer(options?: any, connectionListener?: (socket: Socket) => void): Server;
144
+ export { isIP, isIPv4, isIPv6, getDefaultAutoSelectFamily, setDefaultAutoSelectFamily, setVerbose, initWithConfig, };
145
+ export type { NetConfig };
146
+ declare const _default: {
147
+ Socket: typeof Socket;
148
+ Server: typeof Server;
149
+ SocketAddress: typeof SocketAddress;
150
+ BlockList: typeof BlockList;
151
+ createConnection: typeof createConnection;
152
+ createServer: typeof createServer;
153
+ connect: typeof createConnection;
154
+ isIP: typeof isIP;
155
+ isIPv4: typeof isIPv4;
156
+ isIPv6: typeof isIPv6;
157
+ getDefaultAutoSelectFamily: typeof getDefaultAutoSelectFamily;
158
+ setDefaultAutoSelectFamily: typeof setDefaultAutoSelectFamily;
159
+ setVerbose: typeof setVerbose;
160
+ initWithConfig: typeof initWithConfig;
161
+ };
162
+ export default _default;