@nanobot248/linux-dedupe
Version:
Provides wrapper methods for FIDEDUPERANGE ioctl on linux, allowing to deduplicate file ranges.
42 lines • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Deduplicator = exports.getStatusInfo = exports.FILE_DEDUPE_RANGE_DIFFERS = exports.FILE_DEDUPE_RANGE_SAME = void 0;
const bindings = require("bindings");
const dedupe = bindings("linux-dedupe.node");
exports.FILE_DEDUPE_RANGE_SAME = 0;
exports.FILE_DEDUPE_RANGE_DIFFERS = 1;
function getStatusInfo(status) {
if (status === 0) {
return "Ranges are the same, dedupe ok.";
}
else if (status === 1) {
return "Ranges differ, dedupe not possible.";
}
else {
return "Unknown status value " + status + ".";
}
}
exports.getStatusInfo = getStatusInfo;
class Deduplicator {
constructor() {
}
async dedupe(srcFd, srcOff, srcLen, destFd, destOff) {
return new Promise((resolve, reject) => {
const result = dedupe.ioctl_dedupe_range(srcFd, srcOff, srcLen, destFd, destOff, (err, ioctlResult, status, bytes) => {
console.log("dedupe result: err =", err, ", ioctlResult =", ioctlResult, ", status =", status, ", bytes =", bytes);
if (err != null) {
reject(err);
}
else {
resolve({
ioctlResult: ioctlResult,
status: status,
deduplicatedBytes: bytes
});
}
});
});
}
}
exports.Deduplicator = Deduplicator;
//# sourceMappingURL=index.js.map