diffusion
Version:
Diffusion JavaScript client
52 lines (39 loc) • 1.32 kB
JavaScript
var _implements = require('util/interface')._implements;
var Bytes = require('../../data/bytes');
var util = require('data/util');
module.exports = _implements(Bytes, function BytesImpl(buffer, offset, length) {
util.assignInternals(this, buffer, offset, length);
var self = this;
this.length = function() {
return self.$length;
};
this.asBuffer = function() {
return buffer.slice(self.$offset, self.$offset + self.$length);
};
this.copyTo = function(target, tOffset) {
tOffset = tOffset || 0;
buffer.copy(target, tOffset, self.$offset, self.$offset + self.$length);
};
this.equals = function(bytes) {
return this.equalBytes(bytes.$buffer, bytes.$offset, bytes.$length);
};
this.equalBytes = function(buffer, offset, length) {
if (this.$length !== length) {
return false;
}
var $buffer = this.$buffer;
var $offset = this.$offset;
if ($buffer === buffer && $offset === offset) {
return true;
}
for (var i = 0; i < length; ++i) {
if ($buffer[$offset + i] !== buffer[offset + i]) {
return false;
}
}
return true;
};
});
module.exports.toString = function() {
return "BytesImpl";
};