* replace stream module by improved version of readable/writable impl * rm server.js * async api improvments: - better tracing of calls from worker back and forth - fix transferrable handling to avoid copying buffers for r/w - optional debug logs - completed jsdocs annotations - add dispose method - add setLogLevel method (analoguous to added binding) * node-srt C bindings: - add SetLogLevel to get libSRT log output if desired - add OK static member - add #define EPOLL_EVENTS_NUM_MAX 1024 - improve error string thrown in Read (add that it comes from srt_recvmsg) - improve error string thrown in Write (add that it comes from srt_sendmsg2) - misc isofunctional improvements (var names) and comments * add SRT logging related JS-side helper * rewrite flat TypeScript decl files without "module" keyword * add ts enum decl for all libSRT enums * async-worker: enable using transferrable for zero-copy + allow better debugging (like in api/dispatcher side) + misc improvements on code quality * add async-helpers: various functions to help dealing with transferrables + tracing calls to native bindings in debug output * add async read/write modes functions + async-reader-writer class - these will allow for performing high-level r/w operations conveniently at optimum throughput for larger pieces of payload i.e list of packets. * add srt-server and srt-connection (can manage multiple clients), - based on async-api - can be used with reader/writer (i.e the underlying modes) * srt-server/connection typings * async srt spec: add dispose method usage (but commented out as crashing atm) * async srt spec: rm redundant checks on SRT static members (they are done in other spec already) * promises api spec: formal fixes * stream spec: add dummy test * package.json: - put gyp toolchain in runtime deps (since the build happens on install) - add JEST test runner - shorten check-tsc script - rebuild script: check & use all CPU cores available - run rebuild actually on install, not preinstall (fixes deps not being there) - remove preinstall and thus "npm install git-clone" in the package scripts * update package lock * update typings index not to need triple-slashs anymore * in srt.ts example: check for read return value type * build-srt-sdk script: - allow to use any local libSRT code repo - when using make: use all amount of cores available for build - isolate better code running on different platforms * update package main index with new things * add enum typings index * add jest config * add "use strict" on async-srt-await example * add integration/smoke testing for client-to-server one-way burst write * readme: add note on build prerequisites * readme: add infos on new components SRTServer/Connection & AsyncReaderWriter
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
function argsToString(args) {
|
|
const list = args
|
|
.map(argsItemToString).join(', ');
|
|
return `[${list}]`;
|
|
}
|
|
|
|
function isBufferOrTypedArray(elem) {
|
|
return elem.buffer
|
|
&& elem.buffer instanceof ArrayBuffer;
|
|
}
|
|
|
|
function argsItemToString(elem) {
|
|
if (isBufferOrTypedArray(elem)) {
|
|
return `${elem.constructor.name}<bytes=${elem.byteLength}>`
|
|
} else {
|
|
return elem;
|
|
}
|
|
}
|
|
|
|
function traceCallToString(method, args) {
|
|
return `SRT.${method}(...${argsToString(args)});`
|
|
}
|
|
|
|
/**
|
|
* @see https://nodejs.org/api/worker_threads.html#worker_threads_worker_threads
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable
|
|
* @param {any[]} args Used parameter list to extract Transferrables from
|
|
* @returns {ArrayBuffer[]} List of transferrable objects owned by items of a parameter list
|
|
*/
|
|
function extractTransferListFromParams(args) {
|
|
const transferList = args.reduce((accu, item, index) => {
|
|
if (isBufferOrTypedArray(item)) {
|
|
accu.push(item.buffer);
|
|
}
|
|
return accu;
|
|
}, []);
|
|
return transferList;
|
|
}
|
|
|
|
module.exports = {
|
|
argsToString,
|
|
traceCallToString,
|
|
isBufferOrTypedArray,
|
|
extractTransferListFromParams
|
|
};
|