red-briq-nodes/red/tcp/tcp-keepalive.js

42 lines
831 B
JavaScript

"use strict";
let native = null;
try {
native = require("../../native/tcp_keepalive/build/Release/tcp_keepalive_native");
} catch (err) {
native = null;
}
function parseKeepAliveProbes(value) {
if (value === undefined || value === null || value === "") {
return 0;
}
value = Number(value);
if (!Number.isFinite(value) || value < 0) {
return 0;
}
return Math.floor(value);
}
function setKeepAliveProbes(socket, probes) {
if (!native || probes <= 0 || !socket || !socket._handle) {
return false;
}
const fd = socket._handle.fd;
if (!Number.isInteger(fd) || fd < 0) {
return false;
}
return native.setKeepAliveProbes(fd, probes) === true;
}
module.exports = {
available: !!native,
parseKeepAliveProbes,
setKeepAliveProbes
};