Arlolra has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/255314

Change subject: Have the parsoidService return a promise for the server
......................................................................

Have the parsoidService return a promise for the server

 * This is necessary for the eventual migration to service-runner.

Change-Id: I3a66b1cb883926cf0d7c75af3e4517c25c0aad4c
---
M .jsduck/categories.json
M bin/server.js
M lib/api/ParsoidService.js
3 files changed, 16 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/14/255314/1

diff --git a/.jsduck/categories.json b/.jsduck/categories.json
index 3425a7f..b52fd6a 100644
--- a/.jsduck/categories.json
+++ b/.jsduck/categories.json
@@ -3,12 +3,6 @@
                "name": "Parsoid External APIs",
                "groups": [
                        {
-                               "name": "Server Interface",
-                               "classes": [
-                                       "ParsoidService"
-                               ]
-                       },
-                       {
                                "name": "JavaScript Interface (experimental)",
                                "classes": [
                                        "Parsoid",
diff --git a/bin/server.js b/bin/server.js
index 0bd41e8..55fb0d8 100755
--- a/bin/server.js
+++ b/bin/server.js
@@ -61,7 +61,7 @@
        process.exit(0);
 }
 
-var ParsoidService = require("../lib/api/ParsoidService.js").ParsoidService;
+var parsoidService = require("../lib/api/ParsoidService.js").parsoidService;
 var ParsoidConfig = require("../lib/config/ParsoidConfig.js").ParsoidConfig;
 var Logger = require("../lib/logger/Logger.js").Logger;
 var PLogger = require("../lib/logger/ParsoidLogger.js");
@@ -204,6 +204,5 @@
                },  parsoidConfig.heapUsageSampleInterval);
        }
 
-       var app = new ParsoidService(parsoidConfig, processLogger);
-
+       parsoidService(parsoidConfig, processLogger);
 }
diff --git a/lib/api/ParsoidService.js b/lib/api/ParsoidService.js
index 3f471bf..6b2996f 100644
--- a/lib/api/ParsoidService.js
+++ b/lib/api/ParsoidService.js
@@ -16,20 +16,21 @@
 var path = require('path');
 var util = require('util');
 var uuid = require('node-uuid').v4;
+var http = require('http');
+
 
 /**
- * ParsoidService instantiates an [express](http://expressjs.com/) server
+ * parsoidService instantiates an [express](http://expressjs.com/) server
  * to handle HTTP requests.
  *
  * For more details on the HTTP api, see the
  * [guide](#!/guide/apiuse).
  *
- * @class
- * @constructor
  * @param {ParsoidConfig} parsoidConfig
  * @param {Logger} processLogger
+ * @return {Promise}
  */
-function ParsoidService(parsoidConfig, processLogger) {
+var parsoidService = Promise.method(function(parsoidConfig, processLogger) {
        processLogger.log('info', 'loading ...');
 
        // Get host and port from the environment, if available
@@ -206,16 +207,21 @@
        app.get('/v2/:domain/:format/:title/:revision?', v2, p, routes.v2Get);
        app.post('/v2/:domain/:format/:title?/:revision?', v2, p, 
routes.v2Post);
 
-       var server = app.listen(port, host, function() {
+       var server = http.createServer(app);
+       var listen = Promise.promisify(app.listen, false, app);
+       return listen(port, host).then(function() {
                port = server.address().port;
-               processLogger.log("info", util.format("ready on %s:%s", host || 
"", port));
+               processLogger.log('info',
+                       util.format('ready on %s:%s', host || '', port));
                if (process.send) {
                        // let cluster master know we've started & are ready to 
go.
                        process.send({ type: 'startup', host: host, port: port 
});
                }
+               return server;
        });
-}
+});
+
 
 module.exports = {
-       ParsoidService: ParsoidService,
+       parsoidService: parsoidService,
 };

-- 
To view, visit https://gerrit.wikimedia.org/r/255314
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3a66b1cb883926cf0d7c75af3e4517c25c0aad4c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to