Skip to content

Instantly share code, notes, and snippets.

@akdubya
Created November 17, 2010 19:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akdubya/703849 to your computer and use it in GitHub Desktop.
Save akdubya/703849 to your computer and use it in GitHub Desktop.
var spawn = require('child_process').spawn,
netBinding = process.binding('net'),
net = require('net');
// pipe
(function(){
var infds = netBinding.pipe();
var outfds = netBinding.pipe();
var sed = spawn('sed', ['s/f/F/', '-u'], {customFds: [infds[0], outfds[1], 2]});
var stdin = net.Stream();
stdin.open(infds[1]);
stdin.writable = true;
stdin.readable = false;
netBinding.close(infds[0]);
var stdout = net.Stream();
stdout.open(outfds[0]);
stdout.writable = false;
stdout.readable = true;
stdout.resume();
netBinding.close(outfds[1]);
stdout.on('end', function(){console.log("FIN")});
stdout.on('data', function(d){console.log(d.toString())});
stdin.write('foo\nbar\nbaz\n');
stdin.write('foo\nbar\nbaz\n');
stdin.end();
})();
// socketpair
(function(){
var fds = netBinding.socketpair();
var sed = spawn('sed', ['s/f/F/', '-u'], {customFds: [fds[1], fds[1], 2]});
var io = net.Stream();
io.open(fds[0], 'unix');
io.resume();
netBinding.close(fds[1]);
io.on('end', function(){console.log("FIN")});
io.on('data', function(d){console.log(d.toString())});
io.write('foo\nbar\nbaz\n');
io.end();
})();
// socketpair 2
(function(){
var fds = netBinding.socketpair();
var fds2 = netBinding.pipe();
var sed = spawn('sed', ['s/f/F/', '-u'], {customFds: [fds[1], fds2[1], 2]});
var sed2 = spawn('sed', ['s/b/B/', '-u'], {customFds: [fds2[0], fds[1], 2]});
netBinding.close(fds[1]);
netBinding.close(fds2[0]);
netBinding.close(fds2[1]);
var io = net.Stream();
io.open(fds[0], 'unix');
io.resume();
io.on('end', function(){console.log("FIN")});
io.on('data', function(d){console.log(d.toString())});
io.write('foo\nbar\nbaz\n');
io.end();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment