in src/internal/BinaryCommunicator.ts [81:165]
async writeObject(buffer, object, objectType = null, writeObjectType = true) {
BinaryUtils.checkCompatibility(object, objectType);
if (object === null) {
buffer.writeByte(BinaryUtils.TYPE_CODE.NULL);
return;
}
objectType = objectType ? objectType : BinaryUtils.calcObjectType(object);
const objectTypeCode = BinaryUtils.getTypeCode(objectType);
if (writeObjectType) {
buffer.writeByte(objectTypeCode);
}
switch (objectTypeCode) {
case BinaryUtils.TYPE_CODE.BYTE:
case BinaryUtils.TYPE_CODE.SHORT:
case BinaryUtils.TYPE_CODE.INTEGER:
case BinaryUtils.TYPE_CODE.FLOAT:
case BinaryUtils.TYPE_CODE.DOUBLE:
buffer.writeNumber(object, objectTypeCode);
break;
case BinaryUtils.TYPE_CODE.LONG:
buffer.writeLong(object);
break;
case BinaryUtils.TYPE_CODE.CHAR:
buffer.writeChar(object);
break;
case BinaryUtils.TYPE_CODE.BOOLEAN:
buffer.writeBoolean(object);
break;
case BinaryUtils.TYPE_CODE.STRING:
buffer.writeString(object);
break;
case BinaryUtils.TYPE_CODE.UUID:
this._writeUUID(buffer, object);
break;
case BinaryUtils.TYPE_CODE.DATE:
buffer.writeDate(object);
break;
case BinaryUtils.TYPE_CODE.ENUM:
await this._writeEnum(buffer, object);
break;
case BinaryUtils.TYPE_CODE.DECIMAL:
this._writeDecimal(buffer, object);
break;
case BinaryUtils.TYPE_CODE.TIMESTAMP:
this._writeTimestamp(buffer, object);
break;
case BinaryUtils.TYPE_CODE.TIME:
this._writeTime(buffer, object);
break;
case BinaryUtils.TYPE_CODE.BYTE_ARRAY:
case BinaryUtils.TYPE_CODE.SHORT_ARRAY:
case BinaryUtils.TYPE_CODE.INTEGER_ARRAY:
case BinaryUtils.TYPE_CODE.LONG_ARRAY:
case BinaryUtils.TYPE_CODE.FLOAT_ARRAY:
case BinaryUtils.TYPE_CODE.DOUBLE_ARRAY:
case BinaryUtils.TYPE_CODE.CHAR_ARRAY:
case BinaryUtils.TYPE_CODE.BOOLEAN_ARRAY:
case BinaryUtils.TYPE_CODE.STRING_ARRAY:
case BinaryUtils.TYPE_CODE.UUID_ARRAY:
case BinaryUtils.TYPE_CODE.DATE_ARRAY:
case BinaryUtils.TYPE_CODE.OBJECT_ARRAY:
case BinaryUtils.TYPE_CODE.ENUM_ARRAY:
case BinaryUtils.TYPE_CODE.DECIMAL_ARRAY:
case BinaryUtils.TYPE_CODE.TIMESTAMP_ARRAY:
case BinaryUtils.TYPE_CODE.TIME_ARRAY:
await this._writeArray(buffer, object, objectType, objectTypeCode);
break;
case BinaryUtils.TYPE_CODE.COLLECTION:
await this._writeCollection(buffer, object, objectType);
break;
case BinaryUtils.TYPE_CODE.MAP:
await this._writeMap(buffer, object, objectType);
break;
case BinaryUtils.TYPE_CODE.BINARY_OBJECT:
await this._writeBinaryObject(buffer, object);
break;
case BinaryUtils.TYPE_CODE.COMPLEX_OBJECT:
await this._writeComplexObject(buffer, object, objectType);
break;
default:
throw IgniteClientError.unsupportedTypeError(objectType);
}
}