filer/src/stats.js

53 lines
1.3 KiB
JavaScript

'use strict';
const Constants = require('./constants.js');
const Path = require('./path.js');
function dateFromMs(ms) {
return new Date(Number(ms));
}
function Stats(path, fileNode, devName) {
this.dev = devName;
this.node = fileNode.id;
this.type = fileNode.type;
this.size = fileNode.size;
this.nlinks = fileNode.nlinks;
// Date objects
this.atime = dateFromMs(fileNode.atime);
this.mtime = dateFromMs(fileNode.mtime);
this.ctime = dateFromMs(fileNode.ctime);
// Unix timestamp MS Numbers
this.atimeMs = fileNode.atime;
this.mtimeMs = fileNode.mtime;
this.ctimeMs = fileNode.ctime;
this.version = fileNode.version;
this.mode = fileNode.mode;
this.uid = fileNode.uid;
this.gid = fileNode.gid;
this.name = Path.basename(path);
}
Stats.prototype.isFile = function() {
return this.type === Constants.NODE_TYPE_FILE;
};
Stats.prototype.isDirectory = function() {
return this.type === Constants.NODE_TYPE_DIRECTORY;
};
Stats.prototype.isSymbolicLink = function() {
return this.type === Constants.NODE_TYPE_SYMBOLIC_LINK;
};
// These will always be false in Filer.
Stats.prototype.isSocket =
Stats.prototype.isFIFO =
Stats.prototype.isCharacterDevice =
Stats.prototype.isBlockDevice =
function() {
return false;
};
module.exports = Stats;