UNPKG

cabbie-sync

Version:
79 lines (69 loc) 2.03 kB
'use strict'; 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();