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.
38 lines
1.1 KiB
38 lines
1.1 KiB
// 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 |
|
};
|
|
|