Skip to content
This repository has been archived by the owner on Feb 25, 2020. It is now read-only.

Commit

Permalink
#67
Browse files Browse the repository at this point in the history
  • Loading branch information
olegp committed Aug 25, 2013
1 parent 51344e6 commit 27d429f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 34 deletions.
1 change: 1 addition & 0 deletions bin/common-node
@@ -1,4 +1,5 @@
#!/usr/bin/env node
process.argv.shift();
process.execPath = 'common-node';
require('../lib/run')();

60 changes: 27 additions & 33 deletions lib/httpserver.js
Expand Up @@ -7,6 +7,8 @@ var fs = require('fs').read;
var parse = require('url').parse;
var http = require('http');
var https = require('https');
var cluster = require('cluster');
var cpus = require('os').cpus().length;
var system = require('./system');
var Binary = require('./binary').Binary;
var Stream = require('./io').Stream;
Expand Down Expand Up @@ -99,40 +101,32 @@ var jsgi = exports.jsgi = function(app) {
};

exports.started = false;

var main = exports.main = function(module, port, options) {
options = options || {};
var app;
if (typeof module === "function") {
app = module;
} else {
app = module.app ? module.app : require(module).app;
}
if (!app) {
throw new Error('No app found');
}
port = port || 8080;
var server;
if ('key' in options && 'cert' in options) {
server = https.createServer(options, jsgi(app));
} else {
server = http.createServer(jsgi(app));
}
server.timeout = options.timeout || 0;
server.listen(port);
exports.started = true;
};

if (require.main === module) {
if (process.argv.length < 2) {
console.log('usage: common-node httpserver.js app_module [port] [key_file] [cert_file]');
console.log('port defaults to 8080; if key_file and cert_file are provided, an HTTP server is started');
if (cluster.isMaster && options && 'cluster' in options) {
if(options.cluster == 0) options.cluster = cpus;
for (var i = 0; i < options.cluster; i++) {
cluster.fork(process.env);
}
} else {
var options = {};
if (process.argv[4] && process.argv[5]) {
options.key = fs.readFileSync(process.argv[4]);
options.cert = fs.readFileSync(process.argv[5]);
options = options || {};
var app;
if (typeof module === "function") {
app = module;
} else {
app = module.app ? module.app : require(module).app;
}
main(process.argv[2], process.argv[3], options);
if (!app) {
throw new Error('No app found');
}
port = port || 8080;
var server;
if ('key' in options && 'cert' in options) {
server = https.createServer(options, jsgi(app));
} else {
server = http.createServer(jsgi(app));
}
server.timeout = options.timeout || 0;
server.listen(port);
exports.started = true;
}
}
};
2 changes: 1 addition & 1 deletion lib/run.js
Expand Up @@ -73,7 +73,7 @@ var run = module.exports = function(main) {
if (module.app) {
var httpserver = require('./httpserver');
if (!httpserver.started) {
httpserver.main(module.app, argv[2]);
httpserver.main(module.app, argv[2], {cluster: argv[3]});
}
}
}
Expand Down

0 comments on commit 27d429f

Please sign in to comment.