Skip to content

Commit afaa80f

Browse files
committed
refactor (promises) put backendless promisifier to util/promises class
1 parent 787e51e commit afaa80f

File tree

5 files changed

+28
-20
lines changed

5 files changed

+28
-20
lines changed

lib/server-code/api/persistence-item.js

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,7 @@
11
'use strict';
22

3-
const Backendless = require('backendless');
4-
5-
function promisify(fn, context) {
6-
return function() {
7-
return new Promise((resolve, reject) => {
8-
const args = Array.prototype.slice.call(arguments);
9-
args.push(new Backendless.Async(resolve, reject));
10-
11-
fn.apply(context, args);
12-
});
13-
};
14-
}
3+
const Backendless = require('backendless'),
4+
promisify = require('../../util/promise').promisifyBackendless;
155

166
class PersistenceItem {
177
constructor() {

lib/server-code/runners/cloud.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
const logger = require('../../util/logger'),
44
DriverService = require('../services/driver'),
55
tasksExecutor = require('./tasks/executor'),
6+
promisify = require('../../util/promise').promisifyBackendless,
67
Backendless = require('backendless');
78

9+
function flushPendingLogs() {
10+
return promisify(Backendless.Logging.flush, Backendless.Logging)();
11+
}
12+
813
function finalize() {
9-
if (Backendless.Logging.messagesCount) {
10-
return new Promise((resolve, reject) => {
11-
return Backendless.Logging.flush(new Backendless.Async(resolve, reject));
12-
});
13-
}
14+
flushPendingLogs();
1415
}
1516

1617
exports.start = function(opts) {

lib/server-code/runners/debug.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const logger = require('../../util/logger'),
44
file = require('../../util/file'),
55
redis = require('redis'),
66
promiseWhile = require('../../util/promise').promiseWhile,
7-
denodeify = require('../../util/promise').denodeify,
7+
denodeify = require('../../util/promise').promisifyNode,
88
ApiServerService = require('../services/api-server'),
99
tasksExecutor = require('./tasks/executor'),
1010
ServerCodeModel = require('../model');

lib/server-code/services/api-server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
const denodeify = require('../../util/promise').denodeify,
3+
const denodeify = require('../../util/promise').promisifyNode,
44
logger = require('../../util/logger'),
55
request = denodeify(require('request'));
66

lib/util/promise.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
const Backendless = require('backendless');
4+
35
/**
46
* Wraps a NodeJS continuation passing function and returns an equivalent version that returns a promise.
57
* An analogue to the Q.denodeify
@@ -9,7 +11,7 @@
911
*
1012
* @returns {function}
1113
*/
12-
exports.denodeify = function(fn, context) {
14+
exports.promisifyNode = function(fn, context) {
1315
return function() {
1416
return new Promise((resolve, reject) => {
1517
const args = Array.prototype.slice.call(arguments);
@@ -20,6 +22,21 @@ exports.denodeify = function(fn, context) {
2022
};
2123
};
2224

25+
exports.promisifyBackendless = function(fn, context) {
26+
if (Backendless.promisesEnabled()) {
27+
return fn.bind(context);
28+
}
29+
30+
return function() {
31+
return new Promise((resolve, reject) => {
32+
const args = Array.prototype.slice.call(arguments);
33+
args.push(new Backendless.Async(resolve, reject));
34+
35+
fn.apply(context, args);
36+
});
37+
};
38+
};
39+
2340
exports.promiseWhile = function(predicate, action) {
2441
function loop() {
2542
return predicate() && Promise.resolve(action()).then(loop);

0 commit comments

Comments
 (0)