42 lines
831 B
JavaScript
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
|
|
};
|