39 lines
795 B
JavaScript
39 lines
795 B
JavaScript
import {Base} from './Base.js';
|
|
import {Number as NumberT} from './Number.js';
|
|
import * as utils from './utils.js';
|
|
|
|
export class BufferT extends Base {
|
|
constructor(length) {
|
|
super();
|
|
this.length = length;
|
|
}
|
|
|
|
decode(stream, parent) {
|
|
const length = utils.resolveLength(this.length, stream, parent);
|
|
return stream.readBuffer(length);
|
|
}
|
|
|
|
size(val, parent) {
|
|
if (!val) {
|
|
return utils.resolveLength(this.length, null, parent);
|
|
}
|
|
|
|
let len = val.length;
|
|
if (this.length instanceof NumberT) {
|
|
len += this.length.size();
|
|
}
|
|
|
|
return len;
|
|
}
|
|
|
|
encode(stream, buf, parent) {
|
|
if (this.length instanceof NumberT) {
|
|
this.length.encode(stream, buf.length);
|
|
}
|
|
|
|
return stream.writeBuffer(buf);
|
|
}
|
|
}
|
|
|
|
export {BufferT as Buffer};
|