Skip to content

Commit 1c6d0a3

Browse files
committed
refactor: use new napi-rs codes
1 parent 0b2af66 commit 1c6d0a3

File tree

6 files changed

+169
-308
lines changed

6 files changed

+169
-308
lines changed

js/addon.d.ts

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,34 @@
33

44
/* auto-generated by NAPI-RS */
55

6-
export function seqCreateSocket(ee: object, fd?: number | undefined | null): void
7-
export function seqSetNapiBufSize(ee: object, size: number): void
8-
export function seqGetNapiBufSize(ee: object): number
9-
export function seqStartRecv(ee: object): void
10-
export function seqAddress(ee: object): string
11-
export function seqListen(ee: object, bindpath: string, backlog: number): void
12-
export function seqConnect(ee: object, serverPath: string): void
13-
export function seqWrite(ee: object, buf: Buffer, offset: number, length: number, cb?: (...args: any[]) => any | undefined | null): void
14-
export function seqClose(ee: object): void
15-
export function seqShutdownWhenFlushed(ee: object): void
16-
export function seqRef(ee: object): void
17-
export function seqUnref(ee: object): void
18-
export function dgramCreateSocket(ee: object): void
19-
export function dgramStartRecv(ee: object): void
20-
export function dgramClose(ee: object): void
21-
export function dgramBind(ee: object, bindpath: string): void
22-
export function dgramAddress(ee: object): string
23-
export function dgramGetRecvBufferSize(ee: object): number
24-
export function dgramSetRecvBufferSize(ee: object, size: number): void
25-
export function dgramGetSendBufferSize(ee: object): number
26-
export function dgramSetSendBufferSize(ee: object, size: number): void
27-
export function dgramSendTo(ee: object, buf: Buffer, offset: number, length: number, path: string, cb?: (...args: any[]) => any | undefined | null): void
286
export function socketNewSoReuseportFd(domain: string, port: number, ip: string): number
297
export function socketClose(fd: number): void
8+
export class SeqpacketSocketWrap {
9+
constructor(ee: object, fd?: number | undefined | null)
10+
init(thisObj: object): void
11+
close(): void
12+
shutdownWrite(): void
13+
uvRefer(): void
14+
uvUnrefer(): void
15+
setReadBufSize(size: number): void
16+
getReadBufSize(): number
17+
startRecv(): void
18+
address(): string
19+
listen(bindpath: string, backlog: number): void
20+
connect(serverPath: string): void
21+
write(buf: Buffer, offset: number, length: number, cb?: (...args: any[]) => any | undefined | null): void
22+
shutdownWhenFlushed(): void
23+
}
24+
export class DgramSocketWrap {
25+
constructor(ee: object)
26+
init(thisObj: object): void
27+
startRecv(): void
28+
bind(bindpath: string): void
29+
address(): string
30+
getRecvBufferSize(): number
31+
setRecvBufferSize(size: number): void
32+
getSendBufferSize(): number
33+
setSendBufferSize(size: number): void
34+
sendTo(buf: Buffer, offset: number, length: number, path: string, cb?: (...args: any[]) => any | undefined | null): void
35+
close(): void
36+
}

js/dgram.ts

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,11 @@
11
import { EventEmitter } from 'events';
22
import {
3-
dgramAddress,
4-
dgramBind,
5-
dgramClose,
6-
dgramCreateSocket,
7-
dgramGetRecvBufferSize,
8-
dgramGetSendBufferSize,
9-
dgramSendTo,
10-
dgramSetRecvBufferSize,
11-
dgramSetSendBufferSize,
12-
dgramStartRecv,
3+
DgramSocketWrap
134
} from './addon';
145

156
type FnRecv = (err: undefined | Error, buf: Buffer) => void;
167
export type SendCb = (err: undefined | Error) => void;
178

18-
function wrapSocket(obj: DgramSocket) {
19-
obj.emit = obj.emit.bind(obj);
20-
dgramCreateSocket(obj);
21-
}
22-
239
/**
2410
* DgramSocket is used to create a SOCK_DGRAM unix domain socket.
2511
* Currently DgramSocket doesn't work with `cluster` module.
@@ -42,11 +28,15 @@ function wrapSocket(obj: DgramSocket) {
4228
*/
4329
export class DgramSocket extends EventEmitter {
4430
private closed: boolean = false;
31+
private wrap: DgramSocketWrap;
4532

4633
constructor() {
4734
super();
48-
wrapSocket(this);
49-
dgramStartRecv(this);
35+
this.emit = this.emit.bind(this);
36+
this.wrap = new DgramSocketWrap(this);
37+
// TODO currently we can't get this object in rust side
38+
this.wrap.init(this.wrap);
39+
this.wrap.startRecv();
5040
this.on('_data', this.onData);
5141
this.on('_error', this.onError);
5242
}
@@ -74,7 +64,7 @@ export class DgramSocket extends EventEmitter {
7464
*/
7565
bind(socketPath: string) {
7666
this.checkClosed();
77-
dgramBind(this, socketPath);
67+
this.wrap.bind(socketPath);
7868
}
7969

8070
/**
@@ -93,14 +83,14 @@ export class DgramSocket extends EventEmitter {
9383
onWrite?: SendCb
9484
) {
9585
this.checkClosed();
96-
dgramSendTo(this, buf, offset, length, destPath, onWrite);
86+
this.wrap.sendTo(buf, offset, length, destPath, onWrite);
9787
}
9888

9989
/**
10090
* @returns the SO_RCVBUF socket receive buffer size in bytes.
10191
*/
10292
getRecvBufferSize() {
103-
return dgramGetRecvBufferSize(this);
93+
return this.wrap.getRecvBufferSize();
10494
}
10595

10696
/**
@@ -109,14 +99,14 @@ export class DgramSocket extends EventEmitter {
10999
* @returns
110100
*/
111101
setRecvBufferSize(size: number) {
112-
return dgramSetRecvBufferSize(this, size);
102+
return this.wrap.setRecvBufferSize(size);
113103
}
114104

115105
/**
116106
* @returns the SO_SNDBUF socket send buffer size in bytes.
117107
*/
118108
getSendBufferSize() {
119-
return dgramGetSendBufferSize(this);
109+
return this.wrap.getSendBufferSize();
120110
}
121111

122112
/**
@@ -125,15 +115,15 @@ export class DgramSocket extends EventEmitter {
125115
* @returns
126116
*/
127117
setSendBufferSize(size: number) {
128-
return dgramSetSendBufferSize(this, size);
118+
return this.wrap.setSendBufferSize(size);
129119
}
130120

131121
/**
132122
* Returns the bound address.
133123
* @returns
134124
*/
135125
address(): string {
136-
return dgramAddress(this);
126+
return this.wrap.address();
137127
}
138128

139129
/**
@@ -145,6 +135,6 @@ export class DgramSocket extends EventEmitter {
145135
return;
146136
}
147137
this.closed = true;
148-
dgramClose(this);
138+
this.wrap.close();
149139
}
150140
}

js/seqpacket.ts

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,10 @@
11
import { EventEmitter } from 'events';
22
import {
3-
seqAddress,
4-
seqClose,
5-
seqConnect,
6-
seqCreateSocket,
7-
seqListen,
8-
seqSetNapiBufSize,
9-
seqGetNapiBufSize,
10-
seqShutdownWhenFlushed,
11-
seqStartRecv,
12-
seqWrite,
13-
seqRef,
14-
seqUnref,
3+
SeqpacketSocketWrap
154
} from './addon';
165

176
export type NotifyCb = () => void;
187

19-
function wrapSocket(obj: EventEmitter, fd?: number) {
20-
obj.emit = obj.emit.bind(obj);
21-
seqCreateSocket(obj, fd);
22-
}
23-
248
/**
259
* SeqpacketServer is used to create a SOCK_SEQPACKET server.
2610
* Note that sockets of SOCK_SEQPACKET don't works on MacOS and currently SeqpacketServer doesn't work with `cluster` module, i.e. you can share a SeqpacketServer across different Node.js processes.
@@ -44,10 +28,16 @@ function wrapSocket(obj: EventEmitter, fd?: number) {
4428
*/
4529
export class SeqpacketServer extends EventEmitter {
4630
private closed: boolean = false;
31+
private wrap: SeqpacketSocketWrap;
4732

4833
constructor() {
4934
super();
50-
wrapSocket(this);
35+
36+
this.emit = this.emit.bind(this);
37+
this.wrap = new SeqpacketSocketWrap(this);
38+
// TODO currently we can't get this object in rust side
39+
this.wrap.init(this.wrap);
40+
5141
this.on('_connection', this.onConnection);
5242
this.on('_error', this.onError);
5343
}
@@ -74,7 +64,7 @@ export class SeqpacketServer extends EventEmitter {
7464
*/
7565
address(): string {
7666
this.checkClosed();
77-
return seqAddress(this);
67+
return this.wrap.address();
7868
}
7969

8070
/**
@@ -88,7 +78,7 @@ export class SeqpacketServer extends EventEmitter {
8878
return;
8979
}
9080
this.closed = true;
91-
seqClose(this);
81+
this.wrap.close();
9282
}
9383

9484
/**
@@ -98,21 +88,21 @@ export class SeqpacketServer extends EventEmitter {
9888
*/
9989
listen(bindpath: string, backlog: number = 511) {
10090
this.checkClosed();
101-
seqListen(this, bindpath, backlog);
91+
this.wrap.listen(bindpath, backlog);
10292
}
10393

10494
/**
10595
* Reference the server so that it will prevent Node.js process from exiting automatically.
10696
*/
10797
ref() {
108-
seqRef(this);
98+
this.wrap.uvRefer();
10999
}
110100

111101
/**
112102
* Unreference the server so that it won't prevent Node.js process from exiting automatically.
113103
*/
114104
unref() {
115-
seqUnref(this);
105+
this.wrap.uvUnrefer();
116106
}
117107
}
118108

@@ -141,6 +131,7 @@ export class SeqpacketServer extends EventEmitter {
141131
* Emitted once the socket is fully closed.
142132
*/
143133
export class SeqpacketSocket extends EventEmitter {
134+
private wrap: SeqpacketSocketWrap;
144135
private destroyed: boolean = false;
145136
private connectCb?: NotifyCb;
146137
private shutdownCb?: NotifyCb;
@@ -149,9 +140,14 @@ export class SeqpacketSocket extends EventEmitter {
149140

150141
constructor(fd?: number) {
151142
super();
152-
wrapSocket(this, fd);
143+
144+
this.emit = this.emit.bind(this);
145+
this.wrap = new SeqpacketSocketWrap(this, fd);
146+
// TODO currently we can't get this object in rust side
147+
this.wrap.init(this.wrap);
148+
153149
if (fd) {
154-
seqStartRecv(this);
150+
this.wrap.startRecv();
155151
}
156152
this.on('_data', this.onData);
157153
this.on('end', this.onEnd);
@@ -192,7 +188,7 @@ export class SeqpacketSocket extends EventEmitter {
192188
};
193189

194190
private onConnect = () => {
195-
seqStartRecv(this);
191+
this.wrap.startRecv();
196192
this.emit('connect');
197193
if (this.connectCb) {
198194
this.connectCb();
@@ -222,7 +218,7 @@ export class SeqpacketSocket extends EventEmitter {
222218
connect(serverPath: string, connectCb?: NotifyCb) {
223219
this.checkDestroyed();
224220
this.connectCb = connectCb;
225-
seqConnect(this, serverPath);
221+
this.wrap.connect(serverPath);
226222
}
227223

228224
/**
@@ -238,7 +234,7 @@ export class SeqpacketSocket extends EventEmitter {
238234
length = buf.length
239235
}
240236
this.checkDestroyed();
241-
seqWrite(this, buf, offset, length, cb);
237+
this.wrap.write(buf, offset, length, cb);
242238
}
243239

244240
/**
@@ -247,7 +243,7 @@ export class SeqpacketSocket extends EventEmitter {
247243
*/
248244
end(cb?: NotifyCb) {
249245
this.shutdownCb = cb;
250-
seqShutdownWhenFlushed(this);
246+
this.wrap.shutdownWhenFlushed();
251247
}
252248

253249
/**
@@ -257,7 +253,7 @@ export class SeqpacketSocket extends EventEmitter {
257253
* @returns
258254
*/
259255
getInternalReadBufferSize(): number {
260-
return seqGetNapiBufSize(this);
256+
return this.wrap.getReadBufSize();
261257
}
262258

263259
/**
@@ -266,21 +262,21 @@ export class SeqpacketSocket extends EventEmitter {
266262
* @param size
267263
*/
268264
setInternalReadBufferSize(size: number) {
269-
seqSetNapiBufSize(this, size);
265+
this.wrap.setReadBufSize(size);
270266
}
271267

272268
/**
273269
* Reference the socket so that it will prevent Node.js process from exiting automatically.
274270
*/
275271
ref() {
276-
seqRef(this);
272+
this.wrap.uvRefer();
277273
}
278274

279275
/**
280276
* Unreference the socket so that it won't prevent Node.js process from exiting automatically.
281277
*/
282278
unref() {
283-
seqUnref(this);
279+
this.wrap.uvUnrefer();
284280
}
285281

286282
/**
@@ -291,6 +287,6 @@ export class SeqpacketSocket extends EventEmitter {
291287
return;
292288
}
293289
this.destroyed = true;
294-
seqClose(this);
290+
this.wrap.close();
295291
}
296292
}

0 commit comments

Comments
 (0)