Skip to content

Commit

Permalink
Merge pull request #10 from carlessistare/add-deadline
Browse files Browse the repository at this point in the history
Add deadline parameter in the promisify function
  • Loading branch information
carlessistare authored Sep 17, 2018
2 parents 72be0b8 + adc472f commit d4b9066
Show file tree
Hide file tree
Showing 13 changed files with 52 additions and 22 deletions.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
- [Server Stream Request](#server-stream-request)
- [Bidirectional Stream Request](#bidirectional-stream-request)
- [Request with Metadata](#request-with-metadata)
- [Using Deadline](#using-deadline)
- [Promisify single function](#promisify-single-function)
- [MIT License](#mit-license)

Expand Down Expand Up @@ -489,6 +490,15 @@ function main() {
main();
```

### Using Deadline

The deadline parameter is used to to set a timestamp in millisenconds for the entire call to complete:

```js
// We give a deadline of 1 second (= 1000ms)
grpc_promise.promisifyAll(client, deadline: Date.now() + 1000);
```

### Promisify single function

Client side:
Expand Down
3 changes: 2 additions & 1 deletion examples/client-bidi-stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ function main() {
const meta = new grpc.Metadata();
meta.add('key', 'value');

grpc_promise.promisifyAll(client, {timeout: 100, metadata: meta}); // Optional timeout definition, defaults = 50
// Optional timeout definition, defaults = 50
grpc_promise.promisifyAll(client, { timeout: 100, metadata: meta, deadline: Date.now() + 1000 });

let t = client.testStreamStream();
t.sendMessage({})
Expand Down
2 changes: 1 addition & 1 deletion examples/client-client-stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ function main() {
const meta = new grpc.Metadata();
meta.add('key', 'value');

grpc_promise.promisifyAll(client, {metadata: meta});
grpc_promise.promisifyAll(client, { metadata: meta, deadline: Date.now() + 1000 });

client.testStreamSimple(meta)
.sendMessage({id: 1})
Expand Down
18 changes: 16 additions & 2 deletions examples/client-promisify-only-one.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,28 @@
const grpc = require('grpc');
const protoLoader = require('@grpc/proto-loader');
const grpc_promise = require('../lib/index'); // require('grpc-promise')
const test_proto = grpc.load(__dirname + '/protobuf/test.proto').test;

const packageDefinition = protoLoader.loadSync(
__dirname + '/protobuf/test.proto',
{
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true
}
);

const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
const test_proto = protoDescriptor.test;

function main() {
const client = new test_proto.Test('localhost:50052', grpc.credentials.createInsecure());

const meta = new grpc.Metadata();
meta.add('key', 'value');

grpc_promise.promisify(client, ['testSimpleSimple'], {metadata: meta});
grpc_promise.promisify(client, ['testSimpleSimple'], { metadata: meta, deadline: Date.now() + 1000 });

client.testSimpleSimple()
.sendMessage({id: 1})
Expand Down
2 changes: 1 addition & 1 deletion examples/client-server-stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ function main() {
const meta = new grpc.Metadata();
meta.add('key', 'value');

grpc_promise.promisifyAll(client, {metadata: meta});
grpc_promise.promisifyAll(client, { metadata: meta, deadline: Date.now() + 1000 });

client.testSimpleStream()
.sendMessage({id: 1})
Expand Down
2 changes: 1 addition & 1 deletion examples/client-unary.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ function main() {
const meta = new grpc.Metadata();
meta.add('key', 'value');

grpc_promise.promisifyAll(client, {metadata: meta});
grpc_promise.promisifyAll(client, { metadata: meta, deadline: Date.now() + 1000 });

client.testSimpleSimple()
.sendMessage({id: 1})
Expand Down
2 changes: 1 addition & 1 deletion lib/request-types/bidi-stream-request.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class BidiStreamRequest {
this.queue = {};
this.correlationId = 0;
this.timeout = options.timeout || 50;
this.stream = original_function.call(client, options.metadata);
this.stream = original_function.call(client, options.metadata, { deadline: options.deadline });

this.stream.on('error', () => {});
this.stream.on('data', data => {
Expand Down
2 changes: 1 addition & 1 deletion lib/request-types/client-stream-request.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ class ClientStreamRequest {
constructor (client, original_function, options = {}) {
if (options == null) options = {};
this.promise = new Promise((resolve, reject) => {
this.stream = original_function.call(client, options.metadata, function (error, response) {
this.stream = original_function.call(client, options.metadata, { deadline: options.deadline }, function (error, response) {
if (error) {
reject(error);
} else {
Expand Down
3 changes: 2 additions & 1 deletion lib/request-types/server-stream-request.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ class ServerStreamRequest {
this.queue = [];
this.client = client;
this.metadata = options.metadata;
this.deadline = options.deadline || undefined;
this.original_function = original_function;
}

sendMessage (content = {}) {
return new Promise((resolve, reject) => {
this.stream = this.original_function.call(this.client, content, this.metadata);
this.stream = this.original_function.call(this.client, content, this.metadata, { deadline: this.deadline });
this.stream.on('error', error => {
reject(error);
});
Expand Down
16 changes: 10 additions & 6 deletions lib/request-types/unary-request.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,28 @@ class UnaryRequest {
if (options == null) options = {};
this.client = client;
this.metadata = options.metadata;
this.deadline = options.deadline || undefined;
this.original_function = original_function;
}

sendMessage (content = {}) {
return new Promise((resolve, reject) => {
this.original_function.call(this.client, content, this.metadata, function (error, response) {
if (error) {
reject(error);
} else {
resolve(response);
this.original_function.call(this.client, content, this.metadata, { deadline: this.deadline },
function (error, response) {
if (error) {
reject(error);
} else {
resolve(response);
}
}
});
);
});
}

}

const makeUnaryRequest = function (client, originalFunction, options) {
// console.log(options);
return function () {
return new UnaryRequest(client, originalFunction, options);
};
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "grpc-promise",
"version": "1.3.0",
"version": "1.3.1",
"description": "GRPC promisify module for all Request/Response types: standard and stream",
"main": "lib/index.js",
"scripts": {
Expand Down
6 changes: 3 additions & 3 deletions test/lib/request-types/client-stream-request.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ describe('Client Stream Request', function () {

it('Test ok', function () {
const client = {};
const makeClientStreamRequest = function (metadata, callback) {
const makeClientStreamRequest = function (metadata, options, callback) {
return new ClientStreamMock({callback: callback});
};
makeClientStreamRequest.requestStream = true;
Expand All @@ -29,7 +29,7 @@ describe('Client Stream Request', function () {

it('Test ko', function () {
const client = {};
const makeClientStreamRequest = function (metadata, callback) {
const makeClientStreamRequest = function (metadata, options, callback) {
var stream = new ClientStreamMock();
stream.on('finish', function () {
callback('some_error');
Expand Down Expand Up @@ -60,7 +60,7 @@ describe('Client Stream Request', function () {

it('Test ok', function (done) {
const client = {};
const makeClientStreamRequest = function (metadata, callback) {
const makeClientStreamRequest = function (metadata, options, callback) {
return new ClientStreamMock({callback: callback});
};
makeClientStreamRequest.requestStream = true;
Expand Down
6 changes: 3 additions & 3 deletions test/lib/request-types/unary-request.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ describe('Unary Request', function () {

it('Test ok', function () {
const client = {};
const makeUnaryRequest = function (request, metadata, callback) {
const makeUnaryRequest = function (request, metadata, options, callback) {
callback(null, request);
};
makeUnaryRequest.requestStream = false;
Expand All @@ -24,7 +24,7 @@ describe('Unary Request', function () {

it('Test ko', function () {
const client = {};
const makeUnaryRequest = function (request, metadata, callback) {
const makeUnaryRequest = function (request, metadata, options, callback) {
callback('timeout');
};
makeUnaryRequest.requestStream = false;
Expand All @@ -48,7 +48,7 @@ describe('Unary Request', function () {

it('Test ok', function () {
const client = {};
const makeUnaryRequest = function (request, metadata, callback) {
const makeUnaryRequest = function (request, metadata, options, callback) {
callback(null, request);
};
makeUnaryRequest.requestStream = false;
Expand Down

0 comments on commit d4b9066

Please sign in to comment.