Skip to content

Commit ad50444

Browse files
committed
Implemented protocol basic errors
1 parent 61e55c1 commit ad50444

File tree

9 files changed

+60
-39
lines changed

9 files changed

+60
-39
lines changed

src/core/error.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,21 @@ dop.core.error = {
55
// TOKEN_REJECTED: 'User disconnected because is rejecting too many times the token assigned'
66
// },
77

8-
reject: {
8+
reject_local: {
99
OBJECT_NOT_FOUND: 'Object not found',
10-
SUBSCRIPTION_NOT_FOUND: 'Not subscription found to unsubscribe this object',
11-
FUNCTION_NOT_FOUND: 'Function not found',
10+
NODE_NOT_FOUND: 'Node not found'
11+
},
12+
13+
// Remote rejects
14+
reject_remote: {
15+
OBJECT_NOT_FOUND: 1,
16+
1: 'Remote object not found or not permissions to be subscribed',
17+
SUBSCRIPTION_NOT_FOUND: 2,
18+
2: 'Subscription not found to unsubscribe this object',
19+
FUNCTION_NOT_FOUND: 3,
20+
3: 'Remote function not found to be called',
21+
CUSTOM_REJECTION: 4,
22+
// 3: 'Remote function not found to be called'
1223
}
1324

1425
};
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11

2-
// dop.core.getRejectError = function(error) {
3-
// if (typeof error == 'number' && dop.core.error.reject[error] !== undefined) {
4-
// var args = Array.prototype.slice.call(arguments, 1);
5-
// args.unshift(dop.core.error.reject[error]);
6-
// return dop.util.sprintf.apply(this, args);
7-
// }
8-
// return error;
9-
// };
2+
dop.core.getRejectError = function(error) {
3+
if (typeof error == 'number' && dop.core.error.reject_remote[error] !== undefined) {
4+
var args = Array.prototype.slice.call(arguments, 1);
5+
args.unshift(dop.core.error.reject_remote[error]);
6+
return dop.util.sprintf.apply(this, args);
7+
}
8+
return error;
9+
};

src/protocol/_onsubscribe.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ dop.protocol._onsubscribe = function(node, request_id, request, response) {
44
if (response[0] !== undefined) {
55

66
if (response[0] !== 0)
7-
request.promise.reject(response[0]);
7+
request.promise.reject(dop.core.getRejectError(response[0]));
88

99
else {
1010
var object_path = typeof response[1]=='number' ? [response[1]] : response[1],
@@ -13,7 +13,7 @@ dop.protocol._onsubscribe = function(node, request_id, request, response) {
1313
object, collector;
1414

1515
if (!isArray(object_path) || typeof object_owner_id!='number')
16-
request.promise.reject(dop.core.error.reject.OBJECT_NOT_FOUND);
16+
request.promise.reject(dop.core.error.reject_local.OBJECT_NOT_FOUND);
1717

1818
else {
1919
if (node.owner[object_owner_id] === undefined) {
@@ -35,7 +35,7 @@ dop.protocol._onsubscribe = function(node, request_id, request, response) {
3535
object = dop.util.get(object, object_path.slice(1));
3636

3737
if (!isObject(object))
38-
request.promise.reject(dop.core.error.reject.OBJECT_NOT_FOUND);
38+
request.promise.reject(dop.core.error.reject_local.OBJECT_NOT_FOUND);
3939
else
4040
request.promise.resolve(dop.getObjectProxy(object));
4141
}

src/protocol/call.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ dop.protocol.call = function(node, object_id, path, params) {
1616
return request.promise;
1717
}
1818
else
19-
return Promise.reject(dop.core.error.reject.OBJECT_NOT_FOUND);
19+
return Promise.reject(dop.core.error.reject_local.NODE_NOT_FOUND);
2020
};
2121

2222

@@ -39,27 +39,35 @@ dop.protocol.oncall = function(node, request_id, request) {
3939
return value;
4040
}
4141
function reject(err){
42-
dop.core.storeSendMessages(node, dop.core.createResponse(request_id, err));
42+
dop.core.storeSendMessages(node, dop.core.createResponse(request_id, dop.core.error.reject_remote.CUSTOM_REJECTION, err));
4343
}
44-
(dop.isRemoteFunction(f)) ?
45-
f.apply(null, params).then(resolve).catch(reject)
46-
:
44+
45+
if (dop.isRemoteFunction(f))
46+
f.apply(null, params).then(resolve).catch(reject);
47+
else
4748
dop.core.localProcedureCall(f, params, resolve, reject, function(req) {
4849
req.node = node;
4950
return req;
5051
}, object);
52+
53+
return;
5154
}
5255
}
56+
57+
dop.core.storeSendMessages(node, dop.core.createResponse(request_id, dop.core.error.reject_remote.FUNCTION_NOT_FOUND));
5358
};
5459

5560

5661
dop.protocol._oncall = function(node, request_id, request, response) {
57-
var rejection = response[0];
62+
var rejection = response[0],
63+
promise = request.promise;
5864
if (rejection !== undefined) {
59-
(rejection !== 0) ?
60-
request.promise.reject(rejection)
61-
:
62-
request.promise.resolve(response[1]);
65+
if (rejection === 0)
66+
promise.resolve(response[1]);
67+
else if (rejection===dop.core.error.reject_remote.CUSTOM_REJECTION)
68+
promise.reject(response[1]);
69+
else
70+
promise.reject(dop.core.getRejectError(rejection));
6371
}
6472
};
6573

src/protocol/onsubscribe.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ dop.protocol.onsubscribe = function(node, request_id, request) {
1919
return object;
2020
}
2121
else if (value === undefined)
22-
return Promise.reject(dop.core.error.reject.OBJECT_NOT_FOUND);
22+
return Promise.reject(dop.core.error.reject_remote.OBJECT_NOT_FOUND);
2323
else
2424
// http://www.2ality.com/2016/03/promise-rejections-vs-exceptions.html
2525
// http://stackoverflow.com/questions/41254636/catch-an-error-inside-of-promise-resolver
@@ -33,7 +33,7 @@ dop.protocol.onsubscribe = function(node, request_id, request) {
3333

3434
}
3535
else
36-
reject(dop.core.error.reject.OBJECT_NOT_FOUND);
36+
reject(dop.core.error.reject_remote.OBJECT_NOT_FOUND);
3737

3838
function reject(error) {
3939
var response = dop.core.createResponse(request_id);

src/protocol/onunsubscribe.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ dop.protocol.onunsubscribe = function(node, request_id, request) {
1818
response.push(0);
1919
}
2020
else
21-
response.push(dop.core.error.reject.SUBSCRIPTION_NOT_FOUND);
21+
response.push(dop.core.error.reject_remote.SUBSCRIPTION_NOT_FOUND);
2222

2323
dop.core.storeSendMessages(node, response);
2424
};

src/protocol/unsubscribe.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ dop.protocol.unsubscribe = function(node, object) {
1313
return request.promise;
1414
}
1515
else
16-
return Promise.reject(dop.core.error.reject.SUBSCRIPTION_NOT_FOUND);
16+
return Promise.reject(dop.core.error.reject_remote[2]);
1717
};

test/transports/call.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ server.on('connect', function(node) {
1717
serverClient = node;
1818
})
1919

20-
var obj = {
20+
var objServer = dopServer.register({
2121
string: function(){
22+
tglobal.equal(objServer, this, 'Scope when calling remote is the same that calling locally')
2223
return 'Hello world';
2324
},
2425
undefined: function(){
@@ -45,16 +46,17 @@ var obj = {
4546
reject0: function(req) {
4647
req.reject(0);
4748
}
48-
};
49+
});
4950

5051

5152
dopServer.onsubscribe(function() {
52-
return obj;
53+
return objServer;
5354
})
5455

5556
test('TESTING RESOLVE AN REJECTS', function(t) {
5657

5758
client.subscribe().then(function(obj) {
59+
tglobal=t;
5860
obj.string()
5961
.then(function(value){
6062
t.equal('Hello world', value, 'Returning a string');
@@ -84,14 +86,14 @@ client.subscribe().then(function(obj) {
8486
t.equal(value, 'rejected', 'req.reject');
8587
return obj.reject0();
8688
})
87-
.then(function(value){
88-
console.log( 'then' );
89-
// return obj.sum(2, 2);
90-
t.end();
89+
.catch(function(value){
90+
t.equal(value, 0, 'Rejecting cero value');
91+
delete objServer.sum;
92+
return obj.sum();
9193
})
9294
.catch(function(value){
93-
console.log( 'catch' );
94-
// return obj.sum(2, 2);
95+
t.equal(value, dopClient.core.error.reject_remote[3], dopClient.core.error.reject_remote.FUNCTION_NOT_FOUND);
96+
t.end()
9597
})
9698
})
9799

test/transports/subscribe.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ server.on('connect', function(node) {
2222

2323
test('Before onsubscribe is defined', function(t) {
2424
client.subscribe('DATA').catch(function(err){
25-
t.equal(err, dopClient.core.error.reject.OBJECT_NOT_FOUND, 'Object not found');
25+
t.equal(err, dopClient.core.error.reject_remote[1], 'Object not found');
2626
t.end()
2727
})
2828
})
@@ -131,7 +131,7 @@ test('Client subscribe synchronously', function(t) {
131131
return client.subscribe();
132132
})
133133
.catch(function(err){
134-
t.equal(err, dopClient.core.error.reject.OBJECT_NOT_FOUND, 'Object not found subscription rejected');
134+
t.equal(err, dopClient.core.error.reject_remote[1], 'Object not found subscription rejected');
135135
return client.subscribe('RESOLVESTRING');
136136
})
137137
// .catch(function(err){

0 commit comments

Comments
 (0)