Skip to content

Commit

Permalink
Update to v2.0.13
Browse files Browse the repository at this point in the history
  • Loading branch information
andot committed Jul 3, 2016
1 parent 6075e0f commit bbee780
Show file tree
Hide file tree
Showing 11 changed files with 83 additions and 104 deletions.
4 changes: 3 additions & 1 deletion example/middleware/batchlog/batchloghandler.js
Original file line number Diff line number Diff line change
@@ -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;
};
4 changes: 3 additions & 1 deletion example/middleware/batchlog/loghandler.js
Original file line number Diff line number Diff line change
@@ -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;
};
4 changes: 3 additions & 1 deletion example/middleware/cache/loghandler.js
Original file line number Diff line number Diff line change
@@ -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;
};
4 changes: 2 additions & 2 deletions example/middleware/compressCache/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
11 changes: 3 additions & 8 deletions example/middleware/compressCache/sizehandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
};
12 changes: 3 additions & 9 deletions example/middleware/compressCache/stathandler.js
Original file line number Diff line number Diff line change
@@ -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;
};
};
4 changes: 3 additions & 1 deletion example/middleware/log/loghandler.js
Original file line number Diff line number Diff line change
@@ -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;
};
11 changes: 3 additions & 8 deletions example/middleware/log2/loghandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
46 changes: 13 additions & 33 deletions lib/client/Client.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* *
* HproseClient for Node.js. *
* *
* LastModified: Apr 1, 2016 *
* LastModified: Jul 4, 2016 *
* Author: Ma Bingyao <[email protected]> *
* *
\**********************************************************/
Expand Down Expand Up @@ -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);
}
Expand All @@ -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);
}
Expand All @@ -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);
}
Expand All @@ -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);
}
Expand Down
83 changes: 45 additions & 38 deletions lib/server/Service.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* *
* Hprose Service for Node.js. *
* *
* LastModified: Jun 6, 2016 *
* LastModified: Jul 4, 2016 *
* Author: Ma Bingyao <[email protected]> *
* *
\**********************************************************/
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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);
}
}

Expand Down Expand Up @@ -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);
}
Expand All @@ -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);
}
Expand All @@ -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);
}
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down Expand Up @@ -50,7 +50,7 @@
"lib": "lib/"
},
"main": "lib/hprose.js",
"optionalDependencies": { "ws": "~1.1.0" },
"optionalDependencies": { "ws": "~1.1.1" },
"devDependencies": {
"promises-aplus-tests": "*"
},
Expand Down

0 comments on commit bbee780

Please sign in to comment.