js: This RPC info does not need to be global.

This commit is contained in:
Cory McWilliams 2025-02-27 13:52:24 -05:00
parent 68590cae33
commit 4864a0411f

View File

@ -1,8 +1,5 @@
import * as core from './core.js'; import * as core from './core.js';
let g_next_id = 1;
let g_calls = {};
let gSessionIndex = 0; let gSessionIndex = 0;
/** /**
@ -20,6 +17,8 @@ function makeSessionId() {
function App() { function App() {
this._on_output = null; this._on_output = null;
this._send_queue = []; this._send_queue = [];
this.calls = {};
this._next_call_id = 1;
return this; return this;
} }
@ -39,12 +38,12 @@ App.prototype.readOutput = function (callback) {
App.prototype.makeFunction = function (api) { App.prototype.makeFunction = function (api) {
let self = this; let self = this;
let result = function () { let result = function () {
let id = g_next_id++; let id = self._next_call_id++;
while (!id || g_calls[id]) { while (!id || self.calls[id]) {
id = g_next_id++; id = self._next_call_id++;
} }
let promise = new Promise(function (resolve, reject) { let promise = new Promise(function (resolve, reject) {
g_calls[id] = {resolve: resolve, reject: reject}; self.calls[id] = {resolve: resolve, reject: reject};
}); });
let message = { let message = {
message: 'tfrpc', message: 'tfrpc',
@ -215,13 +214,19 @@ exports.app_socket = async function socket(request, response) {
} else if (message.action == 'createIdentity') { } else if (message.action == 'createIdentity') {
await process.createIdentity(); await process.createIdentity();
} else if (message.message == 'tfrpc') { } else if (message.message == 'tfrpc') {
if (message.id && g_calls[message.id]) { if (message.id) {
if (message.error !== undefined) { let calls = process?.app?.calls;
g_calls[message.id].reject(message.error); if (calls) {
} else { let call = calls[message.id];
g_calls[message.id].resolve(message.result); if (call) {
if (message.error !== undefined) {
call.reject(message.error);
} else {
call.resolve(message.result);
}
delete calls[message.id];
}
} }
delete g_calls[message.id];
} }
} else { } else {
if (process && process.eventHandlers['message']) { if (process && process.eventHandlers['message']) {