cabbie-sync
Version:
A synchronous webdriver client
79 lines (69 loc) • 2.03 kB
JavaScript
;
var _net = require('net');
var _flowRuntime = require('flow-runtime');
var _flowRuntime2 = _interopRequireDefault(_flowRuntime);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
*
* This file is generated automatically, run npm run build to re-generate.
**/
var start = Date.now();
function hookStream(stream, callback) {
var oldWrite = stream.write;
_flowRuntime2.default.any().assert(stream).write = function () {
oldWrite.apply(stream, arguments);
callback.apply(null, arguments);
};
return function () {
_flowRuntime2.default.any().assert(stream).write = oldWrite;
};
}
function listen() {
var server = (0, _net.createServer)(function (c) {
var stdout = hookStream(process.stdout, function (d) {
return c.write(d);
});
var stderr = hookStream(process.stderr, function (d) {
return c.write(d);
});
var buffer = '';
c.on('data', function (d) {
buffer += d.toString('utf8');
if (buffer === 'shutdown') {
process.exit(0);
}
});
c.on('end', function () {
stdout();
stderr();
});
});
server.on('error', function (err) {
if (err.code === 'EADDRINUSE' && Date.now() < start + 60 * 1000) {
var _clientType = _flowRuntime2.default.any(),
client = _clientType.assert(null);
client = _clientType.assert((0, _net.connect)(9517, 'localhost', function () {
var timeout = setTimeout(function () {
throw err;
}, 10000);
client.write('shutdown');
client.on('data', function () {});
client.on('end', function () {
clearTimeout(timeout);
listen();
});
}));
} else {
throw err;
}
});
_flowRuntime2.default.any().assert(server).listen(9517, function () {
console.log('listening');
var startServer = require('taxi-rank');
startServer({
port: 9516,
onStart: function onStart() {}
});
});
}
listen();