From 6c99397ade62678426b8d7ff193d7bb7bb9a396b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Bollo?= Date: Thu, 26 Oct 2017 12:13:21 +0200 Subject: [PATCH] AFB.js: Allows use of client's callIDs MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: I4eaa768446abb875f9c030a58ff919b117c0bfe5 Signed-off-by: José Bollo --- test/AFB.js | 20 ++++++++++++-------- test/monitoring/AFB.js | 20 ++++++++++++-------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/test/AFB.js b/test/AFB.js index 59e68abc..ea70357b 100644 --- a/test/AFB.js +++ b/test/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); 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); -- 2.16.6