hazelcast-client
Version:
Hazelcast - open source In-Memory Data Grid - client for NodeJS
172 lines • 7.96 kB
JavaScript
"use strict";
var ClassDefinition_1 = require("./ClassDefinition");
var BitsUtil_1 = require("../../BitsUtil");
var DefaultPortableReader = (function () {
function DefaultPortableReader(serializer, input, classDefinition) {
this.raw = false;
this.serializer = serializer;
this.input = input;
this.classDefinition = classDefinition;
this.finalPos = this.input.readInt();
var fieldCount = this.input.readInt();
this.offset = this.input.position();
}
DefaultPortableReader.prototype.positionByFieldDefinition = function (field) {
if (this.raw) {
throw new Error('Cannot read portable fields after getRawDataInput called!');
}
var pos = this.input.readInt(this.offset + field.getIndex() * BitsUtil_1.BitsUtil.INT_SIZE_IN_BYTES);
var len = this.input.readShort(pos);
return pos + BitsUtil_1.BitsUtil.SHORT_SIZE_IN_BYTES + len + 1;
};
DefaultPortableReader.prototype.positionByField = function (fieldName, fieldType) {
var definition = this.classDefinition.getField(fieldName);
return this.positionByFieldDefinition(definition);
};
DefaultPortableReader.prototype.getVersion = function () {
return this.classDefinition.getVersion();
};
DefaultPortableReader.prototype.hasField = function (fieldName) {
return this.classDefinition.hasField(fieldName);
};
DefaultPortableReader.prototype.getFieldNames = function () {
throw new Error('Not implemented!');
};
DefaultPortableReader.prototype.getFieldType = function (fieldName) {
return this.classDefinition.getFieldType(fieldName);
};
DefaultPortableReader.prototype.readInt = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.INT);
return this.input.readInt(pos);
};
DefaultPortableReader.prototype.readLong = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.LONG);
return this.input.readLong(pos);
};
DefaultPortableReader.prototype.readUTF = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.UTF);
return this.input.readUTF(pos);
};
DefaultPortableReader.prototype.readBoolean = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.BOOLEAN);
return this.input.readBoolean(pos);
};
DefaultPortableReader.prototype.readByte = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.BYTE);
return this.input.readByte(pos);
};
DefaultPortableReader.prototype.readChar = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.CHAR);
return this.input.readChar(pos);
};
DefaultPortableReader.prototype.readDouble = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.DOUBLE);
return this.input.readDouble(pos);
};
DefaultPortableReader.prototype.readFloat = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.FLOAT);
return this.input.readFloat(pos);
};
DefaultPortableReader.prototype.readShort = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.SHORT);
return this.input.readShort(pos);
};
DefaultPortableReader.prototype.readPortable = function (fieldName) {
var backupPos = this.input.position();
try {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.PORTABLE);
this.input.position(pos);
var isNull = this.input.readBoolean();
var factoryId = this.input.readInt();
var classId = this.input.readInt();
if (isNull) {
return null;
}
else {
return this.serializer.readObject(this.input, factoryId, classId);
}
}
finally {
this.input.position(backupPos);
}
};
DefaultPortableReader.prototype.readByteArray = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.BYTE_ARRAY);
return this.input.readByteArray(pos);
};
DefaultPortableReader.prototype.readBooleanArray = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.BOOLEAN_ARRAY);
return this.input.readBooleanArray(pos);
};
DefaultPortableReader.prototype.readCharArray = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.CHAR_ARRAY);
return this.input.readCharArray(pos);
};
DefaultPortableReader.prototype.readIntArray = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.INT_ARRAY);
return this.input.readIntArray(pos);
};
DefaultPortableReader.prototype.readLongArray = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.LONG_ARRAY);
return this.input.readLongArray(pos);
};
DefaultPortableReader.prototype.readDoubleArray = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.DOUBLE_ARRAY);
return this.input.readDoubleArray(pos);
};
DefaultPortableReader.prototype.readFloatArray = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.FLOAT_ARRAY);
return this.input.readFloatArray(pos);
};
DefaultPortableReader.prototype.readShortArray = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.SHORT_ARRAY);
return this.input.readShortArray(pos);
};
DefaultPortableReader.prototype.readUTFArray = function (fieldName) {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.UTF_ARRAY);
return this.input.readUTFArray(pos);
};
DefaultPortableReader.prototype.readPortableArray = function (fieldName) {
var backupPos = this.input.position();
try {
var pos = this.positionByField(fieldName, ClassDefinition_1.FieldType.PORTABLE_ARRAY);
this.input.position(pos);
var len = this.input.readInt();
var factoryId = this.input.readInt();
var classId = this.input.readInt();
if (len === BitsUtil_1.BitsUtil.NULL_ARRAY_LENGTH) {
return null;
}
else {
var portables = [];
if (len > 0) {
var offset = this.input.position();
for (var i = 0; i < len; i++) {
var start = this.input.readInt(offset + i * BitsUtil_1.BitsUtil.INT_SIZE_IN_BYTES);
this.input.position(start);
portables[i] = this.serializer.readObject(this.input, factoryId, classId);
}
}
return portables;
}
}
finally {
this.input.position(backupPos);
}
};
DefaultPortableReader.prototype.getRawDataInput = function () {
var pos;
if (!this.raw) {
pos = this.input.readInt(this.offset + this.classDefinition.getFieldCount() * BitsUtil_1.BitsUtil.INT_SIZE_IN_BYTES);
this.input.position(pos);
this.raw = true;
}
return this.input;
};
DefaultPortableReader.prototype.end = function () {
this.input.position(this.finalPos);
};
return DefaultPortableReader;
}());
exports.DefaultPortableReader = DefaultPortableReader;
//# sourceMappingURL=DefaultPortableReader.js.map