Skip to content

Commit 8ecd79e

Browse files
randunelsaghul
authored andcommitted
Use ES6. Fixed connect listener never being called.
1 parent 4dbd7a1 commit 8ecd79e

File tree

6 files changed

+112
-61
lines changed

6 files changed

+112
-61
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
build
3+

.jshintrc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"esnext": true,
3+
"node": true,
4+
"unused": true,
5+
"undef": true,
6+
"newcap": false,
7+
"varstmt": true,
8+
"predef": [
9+
"describe",
10+
"it",
11+
"beforeEach",
12+
"before",
13+
"afterEach",
14+
"after"
15+
]
16+
}
17+

examples/client.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use strict';
2+
const abs = require('./lib/abstract_socket');
3+
4+
const client = abs.connect('\0foo2', function() { //'connect' listener
5+
console.log('client connected');
6+
});
7+
8+
client.on('data', function(data) {
9+
console.log(data.toString());
10+
});
11+
12+
process.stdin.setEncoding('utf8');
13+
process.stdin.on('readable', function() {
14+
const chunk = process.stdin.read();
15+
if (chunk !== null)
16+
client.write(chunk);
17+
});

examples/server.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict';
2+
3+
const abs = require('./lib/abstract_socket');
4+
5+
const server = abs.createServer(function(c) { //'connection' listener
6+
console.log('client connected');
7+
c.on('end', function() {
8+
console.log('client disconnected');
9+
});
10+
c.write('hello\r\n');
11+
c.pipe(c);
12+
});
13+
server.listen('\0foo2');
14+

lib/abstract_socket.js

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,56 @@
1+
'use strict';
12

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');
55

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;
1010

1111

1212
function errnoException(errorno, syscall) {
1313
// TODO: having the errno message here would be nice
14-
var e = new Error(syscall + ' ' + errorno);
14+
const e = new Error(syscall + ' ' + errorno);
1515
e.errno = e.code = errorno;
1616
e.syscall = syscall;
1717
return e;
1818
}
1919

20+
class AbstractSocketServer extends net.Server {
21+
constructor(listener) {
22+
super(listener);
23+
}
2024

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+
}
2630

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};
3132

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);
3839
}
40+
}
3941

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);
4644
};
4745

4846

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) {
5250
throw errnoException(err, 'socket');
51+
}
5352

54-
var options = {fd: err, readable: true, writable: true};
53+
const options = {fd: err, readable: true, writable: true};
5554

5655
// yes, connect is synchronous, so sue me
5756
err = connect(err, name);
@@ -60,8 +59,8 @@ exports.connect = function(name, connectListener) {
6059
throw errnoException(err, 'connect');
6160
}
6261

63-
return new net.Socket(options);
62+
const sock = new net.Socket(options);
63+
setImmediate(() => connectListener(sock));
64+
return sock;
6465
};
6566

66-
exports.createConnection = exports.connect;
67-

package.json

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
11
{
2-
"author": {
3-
"name": "Saúl Ibarra Corretgé",
4-
"email": "saghul@gmail.com",
5-
"url": "http://bettercallsaghul.com"
6-
},
7-
"name": "abstract-socket",
8-
"version": "1.1.0",
9-
"description": "Abstract domain socket support for Node / io.js",
10-
"main": "lib/abstract_socket",
11-
"homepage": "https://github.com/saghul/node-abstractsocket",
12-
"license": "MIT",
13-
"repository": {
14-
"type": "git",
15-
"url": "git://github.com/saghul/node-abstractsocket.git"
16-
},
17-
"engines": {
18-
"node": ">=0.10.0"
19-
},
20-
"dependencies": {
21-
"bindings": "^1.2.1",
22-
"nan": "^2.0.9"
23-
},
24-
"os": [
25-
"linux"
26-
]
2+
"author": {
3+
"name": "Saúl Ibarra Corretgé",
4+
"email": "saghul@gmail.com",
5+
"url": "http://bettercallsaghul.com"
6+
},
7+
"name": "abstract-socket",
8+
"version": "1.1.0",
9+
"description": "Abstract domain socket support for Node / io.js",
10+
"main": "lib/abstract_socket",
11+
"homepage": "https://github.com/saghul/node-abstractsocket",
12+
"license": "MIT",
13+
"repository": {
14+
"type": "git",
15+
"url": "git://github.com/saghul/node-abstractsocket.git"
16+
},
17+
"engines": {
18+
"node": ">=0.10.0"
19+
},
20+
"dependencies": {
21+
"bindings": "^1.2.1",
22+
"nan": "^2.0.9"
23+
},
24+
"os": [
25+
"linux"
26+
]
2727
}
28+

0 commit comments

Comments
 (0)