diamante-js-xdr
Version:
Read/write XDR encoded data structures (RFC 4506)
43 lines (35 loc) • 875 B
JavaScript
import { XdrPrimitiveType } from './xdr-type';
import { XdrWriterError } from './errors';
const MAX_VALUE = 4294967295;
const MIN_VALUE = 0;
export class UnsignedInt extends XdrPrimitiveType {
/**
* @inheritDoc
*/
static read(reader) {
return reader.readUInt32BE();
}
/**
* @inheritDoc
*/
static write(value, writer) {
if (
typeof value !== 'number' ||
!(value >= MIN_VALUE && value <= MAX_VALUE) ||
value % 1 !== 0
)
throw new XdrWriterError('invalid u32 value');
writer.writeUInt32BE(value);
}
/**
* @inheritDoc
*/
static isValid(value) {
if (typeof value !== 'number' || value % 1 !== 0) {
return false;
}
return value >= MIN_VALUE && value <= MAX_VALUE;
}
}
UnsignedInt.MAX_VALUE = MAX_VALUE;
UnsignedInt.MIN_VALUE = MIN_VALUE;