diff options
author | José Bollo <jose.bollo@iot.bzh> | 2017-10-26 12:13:21 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2017-10-26 12:13:21 +0200 |
commit | 6c99397ade62678426b8d7ff193d7bb7bb9a396b (patch) | |
tree | b7b2fbfe96d8b78716d0b4d6f3461a7d676d630c /test/monitoring/AFB.js | |
parent | 425026b352cec3980d111bdc30e8dcc77c117ee0 (diff) |
AFB.js: Allows use of client's callIDs
Change-Id: I4eaa768446abb875f9c030a58ff919b117c0bfe5
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'test/monitoring/AFB.js')
-rw-r--r-- | test/monitoring/AFB.js | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/test/monitoring/AFB.js b/test/monitoring/AFB.js index 59e68abc..ea70357b 100644 --- a/test/monitoring/AFB.js +++ b/test/monitoring/AFB.js @@ -105,8 +105,7 @@ var AFB_websocket; function onclose(event) { for (var id in this.pendings) { - var ferr = this.pendings[id].onerror; - ferr && ferr(null, this); + try { this.pendings[id][1](); } catch (x) {/*TODO?*/} } this.pendings = {}; this.onclose && this.onclose(); @@ -131,8 +130,7 @@ var AFB_websocket; if (id in pendings) { var p = pendings[id]; delete pendings[id]; - var f = p[offset]; - f(ans); + try { p[offset](ans); } catch (x) {/*TODO?*/} } } @@ -166,12 +164,18 @@ var AFB_websocket; this.onabort = function(){}; } - function call(method, request) { + function call(method, request, callid) { return new Promise((function(resolve, reject){ var id, arr; - do { - id = String(this.counter = 4095 & (this.counter + 1)); - } while (id in this.pendings); + if (callid) { + id = String(callid); + if (id in this.pendings) + throw new Error("pending callid("+id+") exists"); + } else { + do { + id = String(this.counter = 4095 & (this.counter + 1)); + } while (id in this.pendings); + } this.pendings[id] = [ resolve, reject ]; arr = [CALL, id, method, request ]; if (AFB_context.token) arr.push(AFB_context.token); |