1
+ 'use strict' ;
1
2
2
- var net = require ( 'net' ) ;
3
- var util = require ( 'util' ) ;
4
- var binding = require ( 'bindings' ) ( 'abstract_socket.node' ) ;
3
+ const net = require ( 'net' ) ;
4
+ const binding = require ( 'bindings' ) ( 'abstract_socket.node' ) ;
5
5
6
- var socket = binding . socket ;
7
- var bind = binding . bind ;
8
- var connect = binding . connect ;
9
- var close = binding . close ;
6
+ const socket = binding . socket ;
7
+ const bind = binding . bind ;
8
+ const connect = binding . connect ;
9
+ const close = binding . close ;
10
10
11
11
12
12
function errnoException ( errorno , syscall ) {
13
13
// TODO: having the errno message here would be nice
14
- var e = new Error ( syscall + ' ' + errorno ) ;
14
+ const e = new Error ( syscall + ' ' + errorno ) ;
15
15
e . errno = e . code = errorno ;
16
16
e . syscall = syscall ;
17
17
return e ;
18
18
}
19
19
20
+ class AbstractSocketServer extends net . Server {
21
+ constructor ( listener ) {
22
+ super ( listener ) ;
23
+ }
20
24
21
- function AbstractSocketServer ( connectionListener ) {
22
- net . Server . call ( this , connectionListener ) ;
23
- }
24
- util . inherits ( AbstractSocketServer , net . Server ) ;
25
-
25
+ listen ( name , listener ) {
26
+ let err = socket ( ) ;
27
+ if ( err < 0 ) {
28
+ throw errnoException ( err , 'socket' ) ;
29
+ }
26
30
27
- AbstractSocketServer . prototype . listen = function ( name , listeningListener ) {
28
- var err = socket ( ) ;
29
- if ( err < 0 )
30
- throw errnoException ( err , 'socket' ) ;
31
+ const handle = { fd : err } ;
31
32
32
- var handle = { fd : err } ;
33
-
34
- err = bind ( err , name ) ;
35
- if ( err < 0 ) {
36
- close ( handle . fd ) ;
37
- throw errnoException ( err , 'bind' ) ;
33
+ err = bind ( err , name ) ;
34
+ if ( err < 0 ) {
35
+ close ( handle . fd ) ;
36
+ throw errnoException ( err , 'bind' ) ;
37
+ }
38
+ super . listen ( handle , listener ) ;
38
39
}
40
+ }
39
41
40
- net . Server . prototype . listen . call ( this , handle , listeningListener ) ;
41
- } ;
42
-
43
-
44
- exports . createServer = function ( connectionListener ) {
45
- return new AbstractSocketServer ( connectionListener ) ;
42
+ exports . createServer = function ( listener ) {
43
+ return new AbstractSocketServer ( listener ) ;
46
44
} ;
47
45
48
46
49
- exports . connect = function ( name , connectListener ) {
50
- var err = socket ( ) ;
51
- if ( err < 0 )
47
+ exports . connect = exports . createConnection = function ( name , connectListener ) {
48
+ let err = socket ( ) ;
49
+ if ( err < 0 ) {
52
50
throw errnoException ( err , 'socket' ) ;
51
+ }
53
52
54
- var options = { fd : err , readable : true , writable : true } ;
53
+ const options = { fd : err , readable : true , writable : true } ;
55
54
56
55
// yes, connect is synchronous, so sue me
57
56
err = connect ( err , name ) ;
@@ -60,8 +59,8 @@ exports.connect = function(name, connectListener) {
60
59
throw errnoException ( err , 'connect' ) ;
61
60
}
62
61
63
- return new net . Socket ( options ) ;
62
+ const sock = new net . Socket ( options ) ;
63
+ setImmediate ( ( ) => connectListener ( sock ) ) ;
64
+ return sock ;
64
65
} ;
65
66
66
- exports . createConnection = exports . connect ;
67
-
0 commit comments