hazelcast-client
Version:
Hazelcast - open source In-Memory Data Grid - client for NodeJS
171 lines • 7.24 kB
JavaScript
"use strict";
var Long = require('long');
var BitsUtil_1 = require('./BitsUtil');
var HeapData_1 = require('./serialization/HeapData');
var ClientMessage = (function () {
function ClientMessage(buffer) {
this.cursor = BitsUtil_1.BitsUtil.HEADER_SIZE;
this.buffer = buffer;
}
ClientMessage.newClientMessage = function (payloadSize) {
var totalSize = BitsUtil_1.BitsUtil.HEADER_SIZE + payloadSize;
var buffer = new Buffer(totalSize);
buffer.fill(0, 0, totalSize);
var message = new ClientMessage(buffer);
message.setDataOffset(BitsUtil_1.BitsUtil.HEADER_SIZE);
message.setVersion(BitsUtil_1.BitsUtil.VERSION);
message.setFrameLength(totalSize);
message.setFlags(0xc0);
message.setPartitionId(-1);
return message;
};
ClientMessage.prototype.getBuffer = function () {
return this.buffer;
};
ClientMessage.prototype.getCorrelationId = function () {
var offset = BitsUtil_1.BitsUtil.CORRELATION_ID_FIELD_OFFSET;
return this.readLongInternal(offset);
};
ClientMessage.prototype.setCorrelationId = function (value) {
this.writeLongInternal(value, BitsUtil_1.BitsUtil.CORRELATION_ID_FIELD_OFFSET);
};
ClientMessage.prototype.getPartitionId = function () {
return this.buffer.readInt32LE(BitsUtil_1.BitsUtil.PARTITION_ID_FIELD_OFFSET);
};
ClientMessage.prototype.setPartitionId = function (value) {
this.buffer.writeInt32LE(value, BitsUtil_1.BitsUtil.PARTITION_ID_FIELD_OFFSET);
};
ClientMessage.prototype.setVersion = function (value) {
this.buffer.writeUInt8(value, BitsUtil_1.BitsUtil.VERSION_FIELD_OFFSET);
};
ClientMessage.prototype.getMessageType = function () {
return this.buffer.readUInt16LE(BitsUtil_1.BitsUtil.TYPE_FIELD_OFFSET);
};
ClientMessage.prototype.setMessageType = function (value) {
this.buffer.writeUInt16LE(value, BitsUtil_1.BitsUtil.TYPE_FIELD_OFFSET);
};
ClientMessage.prototype.getFlags = function () {
return this.buffer.readUInt8(BitsUtil_1.BitsUtil.FLAGS_FIELD_OFFSET);
};
ClientMessage.prototype.setFlags = function (value) {
this.buffer.writeUInt8(value, BitsUtil_1.BitsUtil.FLAGS_FIELD_OFFSET);
};
ClientMessage.prototype.hasFlags = function (flags) {
return this.getFlags() & flags;
};
ClientMessage.prototype.getFrameLength = function () {
return this.buffer.readInt32LE(BitsUtil_1.BitsUtil.FRAME_LENGTH_FIELD_OFFSET);
};
ClientMessage.prototype.setFrameLength = function (value) {
this.buffer.writeInt32LE(value, BitsUtil_1.BitsUtil.FRAME_LENGTH_FIELD_OFFSET);
};
ClientMessage.prototype.getDataOffset = function () {
return this.buffer.readInt16LE(BitsUtil_1.BitsUtil.DATA_OFFSET_FIELD_OFFSET);
};
ClientMessage.prototype.setDataOffset = function (value) {
this.buffer.writeInt16LE(value, BitsUtil_1.BitsUtil.DATA_OFFSET_FIELD_OFFSET);
};
ClientMessage.prototype.setRetryable = function (value) {
this.isRetryable = value;
};
ClientMessage.prototype.appendByte = function (value) {
this.buffer.writeUInt8(value, this.cursor);
this.cursor += BitsUtil_1.BitsUtil.BYTE_SIZE_IN_BYTES;
};
ClientMessage.prototype.appendBoolean = function (value) {
return this.appendByte(value ? 1 : 0);
};
ClientMessage.prototype.appendInt32 = function (value) {
this.buffer.writeInt32LE(value, this.cursor);
this.cursor += BitsUtil_1.BitsUtil.INT_SIZE_IN_BYTES;
};
ClientMessage.prototype.appendUint8 = function (value) {
this.buffer.writeUInt8(value, this.cursor);
this.cursor += BitsUtil_1.BitsUtil.BYTE_SIZE_IN_BYTES;
};
ClientMessage.prototype.writeLongInternal = function (value, offset) {
if (!Long.isLong(value)) {
value = Long.fromValue(value);
}
this.buffer.writeInt32LE(value.low, offset);
this.buffer.writeInt32LE(value.high, offset + 4);
};
ClientMessage.prototype.appendLong = function (value) {
this.writeLongInternal(value, this.cursor);
this.cursor += BitsUtil_1.BitsUtil.LONG_SIZE_IN_BYTES;
};
ClientMessage.prototype.appendString = function (value) {
var length = value.length;
this.buffer.writeInt32LE(length, this.cursor);
this.cursor += 4;
this.buffer.write(value, this.cursor);
this.cursor += length;
};
ClientMessage.prototype.appendBuffer = function (buffer) {
var length = buffer.length;
this.appendInt32(length);
buffer.copy(this.buffer, this.cursor);
this.cursor += length;
};
ClientMessage.prototype.appendData = function (data) {
this.appendBuffer(data.toBuffer());
};
ClientMessage.prototype.addFlag = function (value) {
this.buffer.writeUInt8(value | this.getFlags(), BitsUtil_1.BitsUtil.FLAGS_FIELD_OFFSET);
};
ClientMessage.prototype.updateFrameLength = function () {
this.setFrameLength(this.cursor);
};
ClientMessage.prototype.readData = function () {
var dataPayload = this.readBuffer();
return new HeapData_1.HeapData(dataPayload);
};
ClientMessage.prototype.readByte = function () {
var value = this.buffer.readUInt8(this.cursor);
this.cursor += BitsUtil_1.BitsUtil.BYTE_SIZE_IN_BYTES;
return value;
};
ClientMessage.prototype.readBoolean = function () {
return this.readByte() === 1;
};
ClientMessage.prototype.readUInt8 = function () {
var value = this.buffer.readUInt8(this.cursor);
this.cursor += BitsUtil_1.BitsUtil.BYTE_SIZE_IN_BYTES;
return value;
};
ClientMessage.prototype.readInt32 = function () {
var value = this.buffer.readInt32LE(this.cursor);
this.cursor += BitsUtil_1.BitsUtil.INT_SIZE_IN_BYTES;
return value;
};
ClientMessage.prototype.readLong = function () {
var value = this.readLongInternal(this.cursor);
this.cursor += BitsUtil_1.BitsUtil.LONG_SIZE_IN_BYTES;
return value;
};
ClientMessage.prototype.readLongInternal = function (offset) {
var low = this.buffer.readInt32LE(offset);
var high = this.buffer.readInt32LE(offset + 4);
return new Long(low, high);
};
ClientMessage.prototype.readString = function () {
var length = this.buffer.readInt32LE(this.cursor);
this.cursor += BitsUtil_1.BitsUtil.INT_SIZE_IN_BYTES;
var value = this.buffer.toString('utf8', this.cursor, this.cursor + length);
this.cursor += length;
return value;
};
ClientMessage.prototype.readBuffer = function () {
var size = this.buffer.readUInt32LE(this.cursor);
this.cursor += BitsUtil_1.BitsUtil.INT_SIZE_IN_BYTES;
var result = new Buffer(size);
this.buffer.copy(result, 0, this.cursor, this.cursor + size);
this.cursor += size;
return result;
};
ClientMessage.prototype.readMapEntry = function () {
};
return ClientMessage;
}());
module.exports = ClientMessage;
//# sourceMappingURL=ClientMessage.js.map