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