From bbee7801a7a5ce7e2b59372af07d4fad8a760c9c Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 4 Jul 2016 01:49:14 +0800 Subject: [PATCH] Update to v2.0.13 --- .../middleware/batchlog/batchloghandler.js | 4 +- example/middleware/batchlog/loghandler.js | 4 +- example/middleware/cache/loghandler.js | 4 +- example/middleware/compressCache/server.js | 4 +- .../middleware/compressCache/sizehandler.js | 11 +-- .../middleware/compressCache/stathandler.js | 12 +-- example/middleware/log/loghandler.js | 4 +- example/middleware/log2/loghandler.js | 11 +-- lib/client/Client.js | 46 +++------- lib/server/Service.js | 83 ++++++++++--------- package.json | 4 +- 11 files changed, 83 insertions(+), 104 deletions(-) diff --git a/example/middleware/batchlog/batchloghandler.js b/example/middleware/batchlog/batchloghandler.js index d418f06..9218024 100644 --- a/example/middleware/batchlog/batchloghandler.js +++ b/example/middleware/batchlog/batchloghandler.js @@ -1,6 +1,8 @@ module.exports = function(batches, context, next) { console.log("before invoke:", batches); var result = next(batches, context); - console.log("after invoke:", batches, result); + result.then(function(result) { + console.log("after invoke:", batches, result); + }); return result; }; diff --git a/example/middleware/batchlog/loghandler.js b/example/middleware/batchlog/loghandler.js index 24b6cab..c77a599 100644 --- a/example/middleware/batchlog/loghandler.js +++ b/example/middleware/batchlog/loghandler.js @@ -1,6 +1,8 @@ module.exports = function(name, args, context, next) { console.log("before invoke:", name, args); var result = next(name, args, context); - console.log("after invoke:", name, args, result); + result.then(function(result) { + console.log("after invoke:", name, args, result); + }); return result; }; diff --git a/example/middleware/cache/loghandler.js b/example/middleware/cache/loghandler.js index 24b6cab..c77a599 100644 --- a/example/middleware/cache/loghandler.js +++ b/example/middleware/cache/loghandler.js @@ -1,6 +1,8 @@ module.exports = function(name, args, context, next) { console.log("before invoke:", name, args); var result = next(name, args, context); - console.log("after invoke:", name, args, result); + result.then(function(result) { + console.log("after invoke:", name, args, result); + }); return result; }; diff --git a/example/middleware/compressCache/server.js b/example/middleware/compressCache/server.js index 5ce4454..a58028e 100644 --- a/example/middleware/compressCache/server.js +++ b/example/middleware/compressCache/server.js @@ -7,9 +7,9 @@ function echo(value) { } var server = hprose.Server.create("http://0.0.0.0:8080"); server.beforeFilter.use(stathandler('BeforeFilter')) - .use(sizehandler('Non compressed')); + .use(sizehandler('compressed')); server.addFilter(new CompressFilter('Lzp3')); server.afterFilter.use(stathandler('AfterFilter')) - .use(sizehandler('compressed')); + .use(sizehandler('Non compressed')); server.add(echo); server.start(); diff --git a/example/middleware/compressCache/sizehandler.js b/example/middleware/compressCache/sizehandler.js index d9e4da6..b1fe00c 100644 --- a/example/middleware/compressCache/sizehandler.js +++ b/example/middleware/compressCache/sizehandler.js @@ -3,14 +3,9 @@ module.exports = function(message) { return function(request, context, next) { console.log(message + ' request size: ' + request.length); var response = next(request, context); - if (hprose.Future.isPromise(response)) { - response.then(function(data) { - console.log(message + ' response size: ' + data.length); - }); - } - else { - console.log(message + ' response size: ' + response.length); - } + response.then(function(data) { + console.log(message + ' response size: ' + data.length); + }); return response; }; }; diff --git a/example/middleware/compressCache/stathandler.js b/example/middleware/compressCache/stathandler.js index d8c8d65..8b5e170 100644 --- a/example/middleware/compressCache/stathandler.js +++ b/example/middleware/compressCache/stathandler.js @@ -1,17 +1,11 @@ module.exports = function(message) { return function(request, context, next) { var start = Date.now(); - function showstat() { + var response = next(request, context); + response.then(function() { var end = Date.now(); console.log(message + ': It takes ' + (end - start) + ' ms.'); - } - var response = next(request, context); - if (hprose.Future.isPromise(response)) { - response.then(showstat); - } - else { - showstat(); - } + }); return response; }; }; diff --git a/example/middleware/log/loghandler.js b/example/middleware/log/loghandler.js index 24b6cab..c77a599 100644 --- a/example/middleware/log/loghandler.js +++ b/example/middleware/log/loghandler.js @@ -1,6 +1,8 @@ module.exports = function(name, args, context, next) { console.log("before invoke:", name, args); var result = next(name, args, context); - console.log("after invoke:", name, args, result); + result.then(function(result) { + console.log("after invoke:", name, args, result); + }); return result; }; diff --git a/example/middleware/log2/loghandler.js b/example/middleware/log2/loghandler.js index da05a2e..d26af91 100644 --- a/example/middleware/log2/loghandler.js +++ b/example/middleware/log2/loghandler.js @@ -2,13 +2,8 @@ var hprose = require('hprose'); module.exports = function(request, context, next) { console.log(hprose.BytesIO.toString(request)); var response = next(request, context); - if (hprose.Future.isPromise(response)) { - response.then(function(data) { - console.log(hprose.BytesIO.toString(data)); - }); - } - else { - console.log(hprose.BytesIO.toString(response)); - } + response.then(function(data) { + console.log(hprose.BytesIO.toString(data)); + }); return response; }; diff --git a/lib/client/Client.js b/lib/client/Client.js index 307555b..c610a1c 100644 --- a/lib/client/Client.js +++ b/lib/client/Client.js @@ -13,7 +13,7 @@ * * * HproseClient for Node.js. * * * - * LastModified: Apr 1, 2016 * + * LastModified: Jul 4, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1015,14 +1015,9 @@ function Client(uri, functions, settings) { _invokeHandler = _invokeHandlers.reduceRight( function(next, handler) { return function(name, args, context) { - try { - var result = handler(name, args, context, next); - if (Future.isFuture(result)) { return result; } - return Future.value(result); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(name, args, context, next); + }); }; }, invokeHandler); } @@ -1031,14 +1026,9 @@ function Client(uri, functions, settings) { _batchInvokeHandler = _batchInvokeHandlers.reduceRight( function(next, handler) { return function(batches, context) { - try { - var result = handler(batches, context, next); - if (Future.isFuture(result)) { return result; } - return Future.value(result); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(batches, context, next); + }); }; }, batchInvokeHandler); } @@ -1047,14 +1037,9 @@ function Client(uri, functions, settings) { _beforeFilterHandler = _beforeFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - try { - var response = handler(request, context, next); - if (Future.isFuture(response)) { return response; } - return Future.value(response); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(request, context, next); + }); }; }, beforeFilterHandler); } @@ -1063,14 +1048,9 @@ function Client(uri, functions, settings) { _afterFilterHandler = _afterFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - try { - var response = handler(request, context, next); - if (Future.isFuture(response)) { return response; } - return Future.value(response); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(request, context, next); + }); }; }, afterFilterHandler); } diff --git a/lib/server/Service.js b/lib/server/Service.js index 25330d6..d0c3861 100644 --- a/lib/server/Service.js +++ b/lib/server/Service.js @@ -13,7 +13,7 @@ * * * Hprose Service for Node.js. * * * - * LastModified: Jun 6, 2016 * + * LastModified: Jul 4, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -188,13 +188,9 @@ function Service() { }); } } - var result = invoke(name, args, context); - if (Future.isPromise(result)) { - return result.then(null, function(e) { - return sendError(e, context); - }); - } - return result; + return invoke(name, args, context).then(null, function(e) { + return sendError(e, context); + }); } catch (e) { return sendError(e, context); @@ -225,19 +221,15 @@ function Service() { } else { if (passContext) { args.push(context); } - return callService(args, context); + return Future.toPromise(callService(args, context)); } } function invoke(name, args, context) { - var result = _invokeHandler(name, args, context); - if (Future.isPromise(result)) { - return result.then(function(result) { - if (isError(result)) { throw result; } - return afterInvoke(name, args, context, result); - }); - } - return afterInvoke(name, args, context, result); + return _invokeHandler(name, args, context).then(function(result) { + if (isError(result)) { throw result; } + return afterInvoke(name, args, context, result); + }); } function afterInvoke(name, args, context, result) { @@ -347,34 +339,43 @@ function Service() { return stream.bytes; } + function delayError(e, context) { + var err = endError(e, context); + if (_errorDelay > 0) { + return Future.delayed(_errorDelay, err); + } + else { + return Promise.value(err); + } + } + function beforeFilterHandler(request, context) { var response; try { request = inputFilter(request, context); - response = _afterFilterHandler(request, context); - } - catch (e) { - response = endError(e, context); - if (_errorDelay > 0) { - response = Future.delayed(_errorDelay, response); - } - } - if (Future.isPromise(response)) { - return response.then(function(response) { - return outputFilter(response, context); + response = _afterFilterHandler(request, context).then(null, function(e) { + return delayError(e, context); }); } - else { - return outputFilter(response, context); + catch (e) { + response = delayError(e, context); } + return response.then(function(value) { + return outputFilter(value, context); + }); } function afterFilterHandler(request, context) { - var input = new BytesIO(request); - switch (input.readByte()) { - case Tags.TagCall: return doInvoke(input, context); - case Tags.TagEnd: return doFunctionList(context); - default: throw new Error('Wrong Request: \r\n' + BytesIO.toString(request)); + try { + var input = new BytesIO(request); + switch (input.readByte()) { + case Tags.TagCall: return doInvoke(input, context); + case Tags.TagEnd: return Future.value(doFunctionList(context)); + default: throw new Error('Wrong Request: \r\n' + BytesIO.toString(request)); + } + } + catch (e) { + return Future.error(e); } } @@ -1067,7 +1068,9 @@ function Service() { _beforeFilterHandler = _beforeFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - return handler(request, context, next); + return Future.sync(function() { + return handler(request, context, next); + }); }; }, beforeFilterHandler); } @@ -1076,7 +1079,9 @@ function Service() { _afterFilterHandler = _afterFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - return handler(request, context, next); + return Future.sync(function() { + return handler(request, context, next); + }); }; }, afterFilterHandler); } @@ -1085,7 +1090,9 @@ function Service() { _invokeHandler = _invokeHandlers.reduceRight( function(next, handler) { return function(name, args, context) { - return handler(name, args, context, next); + return Future.sync(function() { + return handler(name, args, context, next); + }); }; }, invokeHandler); } diff --git a/package.json b/package.json index d0f4b43..6858f6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hprose", - "version": "2.0.12", + "version": "2.0.13", "homepage": "https://github.com/hprose/hprose-nodejs", "description": "hprose for node.js", "keywords": [ @@ -50,7 +50,7 @@ "lib": "lib/" }, "main": "lib/hprose.js", - "optionalDependencies": { "ws": "~1.1.0" }, + "optionalDependencies": { "ws": "~1.1.1" }, "devDependencies": { "promises-aplus-tests": "*" },