Compare commits
2 commits
2b11b57818
...
9e24750d4d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e24750d4d | ||
|
|
c0abe0a180 |
29
lib/plankton/plankton.d.ts
vendored
29
lib/plankton/plankton.d.ts
vendored
|
|
@ -887,6 +887,35 @@ declare namespace lib_plankton.call {
|
|||
export function null_prop<type_value_from, type_value_to>(value_from: (null | type_value_from), function_: ((value: type_value_from) => type_value_to)): (null | type_value_to);
|
||||
export {};
|
||||
}
|
||||
declare namespace lib_plankton.call {
|
||||
/**
|
||||
*/
|
||||
type type_queue_item<type_data, type_result> = {
|
||||
data: type_data;
|
||||
resolve: ((result: type_result) => void);
|
||||
reject: ((reason: any) => void);
|
||||
};
|
||||
/**
|
||||
*/
|
||||
export type type_queue<type_data, type_result> = {
|
||||
handler: ((data: type_data) => Promise<type_result>);
|
||||
items: Array<type_queue_item<type_data, type_result>>;
|
||||
busy: boolean;
|
||||
paused: boolean;
|
||||
};
|
||||
/**
|
||||
*/
|
||||
export function queue_make<type_data, type_result>(handler: ((data: type_data) => Promise<type_result>)): type_queue<type_data, type_result>;
|
||||
/**
|
||||
*/
|
||||
export function queue_toggle_paused<type_data, type_result>(queue_subject: type_queue<type_data, type_result>, { "mode": mode, }?: {
|
||||
mode?: (null | boolean);
|
||||
}): void;
|
||||
/**
|
||||
*/
|
||||
export function queue_add<type_data, type_result>(queue_subject: type_queue<type_data, type_result>, data: type_data, resolve: ((result: type_result) => void), reject: ((reason: any) => void)): void;
|
||||
export {};
|
||||
}
|
||||
declare namespace lib_plankton.file {
|
||||
/**
|
||||
* @author fenris
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -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,56 +253,14 @@ namespace _dali.backend
|
|||
&&
|
||||
(http_response.status_code < 300)
|
||||
)
|
||||
) {
|
||||
return Promise.reject<any>(http_response.body.toString());
|
||||
}
|
||||
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
|
||||
return Promise.reject<any>(http_response.body.toString());
|
||||
}
|
||||
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();
|
||||
const output : any = lib_plankton.json.decode(http_response.body.toString());
|
||||
return Promise.resolve<any>(output);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -331,19 +279,18 @@ namespace _dali.backend
|
|||
"action": action,
|
||||
"input": input,
|
||||
};
|
||||
const promise : Promise<any> = new Promise<any>(
|
||||
(resolve, reject) => {
|
||||
_queue.items.push(
|
||||
{
|
||||
"request": request,
|
||||
"resolve": resolve,
|
||||
"reject": reject,
|
||||
}
|
||||
);
|
||||
}
|
||||
return (
|
||||
new Promise<any>(
|
||||
(resolve, reject) => {
|
||||
lib_plankton.call.queue_add<type_request, any>(
|
||||
_queue,
|
||||
request,
|
||||
resolve,
|
||||
reject
|
||||
);
|
||||
}
|
||||
)
|
||||
);
|
||||
process();
|
||||
return promise;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue