You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.1 KiB
39 lines
1.1 KiB
1 month ago
|
// src/common.ts
|
||
|
var kMovable = Symbol("Tinypool.kMovable");
|
||
|
var kTransferable = Symbol.for("Tinypool.transferable");
|
||
|
var kValue = Symbol.for("Tinypool.valueOf");
|
||
|
var kQueueOptions = Symbol.for("Tinypool.queueOptions");
|
||
|
function isTransferable(value) {
|
||
|
return value != null && typeof value === "object" && kTransferable in value && kValue in value;
|
||
|
}
|
||
|
function isMovable(value) {
|
||
|
return isTransferable(value) && value[kMovable] === true;
|
||
|
}
|
||
|
function markMovable(value) {
|
||
|
Object.defineProperty(value, kMovable, {
|
||
|
enumerable: false,
|
||
|
configurable: true,
|
||
|
writable: true,
|
||
|
value: true
|
||
|
});
|
||
|
}
|
||
|
function isTaskQueue(value) {
|
||
|
return typeof value === "object" && value !== null && "size" in value && typeof value.shift === "function" && typeof value.remove === "function" && typeof value.push === "function";
|
||
|
}
|
||
|
var kRequestCountField = 0;
|
||
|
var kResponseCountField = 1;
|
||
|
var kFieldCount = 2;
|
||
|
|
||
|
export {
|
||
|
kTransferable,
|
||
|
kValue,
|
||
|
kQueueOptions,
|
||
|
isTransferable,
|
||
|
isMovable,
|
||
|
markMovable,
|
||
|
isTaskQueue,
|
||
|
kRequestCountField,
|
||
|
kResponseCountField,
|
||
|
kFieldCount
|
||
|
};
|