[mod] queueing ausgelagern

This commit is contained in:
fenris 2025-10-24 00:23:53 +02:00
parent c0abe0a180
commit 9e24750d4d

View file

@ -127,16 +127,7 @@ namespace _dali.backend
/**
*/
var _queue : {
items : Array<
{
request : type_request;
resolve : ((result : any) => void);
reject : ((reason : any) => void);
}
>;
busy : boolean;
};
var _queue : lib_plankton.call.type_queue<type_request, any>;
/**
@ -160,10 +151,9 @@ namespace _dali.backend
)
*/
);
_queue = {
"items": [],
"busy": false,
};
_queue = lib_plankton.call.queue_make<type_request, any>(
call_real
);
return Promise.resolve<void>(undefined);
}
@ -263,60 +253,18 @@ namespace _dali.backend
&&
(http_response.status_code < 300)
)
) {
)
{
return Promise.reject<any>(http_response.body.toString());
}
else {
else
{
const output : any = lib_plankton.json.decode(http_response.body.toString());
return Promise.resolve<any>(output);
}
}
/**
*/
async function process(
)
: Promise<void>
{
if (_queue.busy)
{
// do nothing
}
else
{
_queue.busy = true;
while (_queue.items.length > 0)
{
const entry = _queue.items.shift();
let successful : boolean;
let reason : any;
let result : any;
try
{
result = await call_real(entry.request);
successful = true;
}
catch (error)
{
reason = error;
successful = false;
}
if (successful)
{
entry.resolve(result);
}
else
{
entry.reject(reason);
}
}
_queue.busy = false;
// process();
}
}
/**
*/
async function call(
@ -331,19 +279,18 @@ namespace _dali.backend
"action": action,
"input": input,
};
const promise : Promise<any> = new Promise<any>(
return (
new Promise<any>(
(resolve, reject) => {
_queue.items.push(
{
"request": request,
"resolve": resolve,
"reject": reject,
}
lib_plankton.call.queue_add<type_request, any>(
_queue,
request,
resolve,
reject
);
}
)
);
process();
return promise;
}