/** * Read a list of objects. * * @param buff the target buffer * @param obj the objects * @param len the number of objects to read */ default void read(ByteBuffer buff, Object[] obj, int len) { for (int i = 0; i < len; i++) { obj[i] = read(buff); } }
/** * Write a list of objects. * * @param buff the target buffer * @param obj the objects * @param len the number of objects to write */ default void write(DataBuffer buff, Object[] obj, int len) { for (int i = 0; i < len; i++) { write(buff, obj[i]); } }
@Override public boolean areValuesEqual(Object a, Object b) { if (a == b) { return true; } else if (a == null || b == null) { return false; } return valueType.compare(a, b) == 0; }
@Override public int getMemory(Object obj, int columnIndex) { TransactionalValue v = (TransactionalValue) obj; return valueType.getMemory(v.value, columnIndex); } }
buff.put((byte) map.pageStorageMode.ordinal()); StorageDataType valueType = map.getValueType(); int columnCount = valueType.getColumnCount(); int checkPos = buff.position(); buff.putShort((short) 0).putVarInt(keyLength).putVarInt(columnCount); map.getKeyType().write(buff, keys, keyLength); valueType.writeMeta(buff, values[row]); compressStart = buff.position(); for (int row = 0; row < keyLength; row++) { valueType.writeColumn(buff, values[row], col);
buff = expandPage(buff, type, start, pageLength); map.getKeyType().read(buff, keys, keyLength); values = new Object[keyLength]; StorageDataType valueType = map.getValueType(); for (int row = 0; row < keyLength; row++) { values[row] = valueType.readMeta(buff, columnCount); ByteBuffer columnPageBuff = expandPage(buff, columnPageType, columnPageStartPos, columnPageLength); for (int row = 0; row < keyLength; row++) { valueType.readColumn(columnPageBuff, values[row], col);
Object k = map.getKeyType().read(ByteBuffer.wrap(key)); Object v = valueType.read(ByteBuffer.wrap(value)); Object result = map.put(k, v); writeResponseHeader(transfer, session, id); valueType.write(writeBuffer, result); ByteBuffer buffer = writeBuffer.getAndFlipBuffer(); transfer.writeByteBuffer(buffer); Object v = map.getValueType().read(ByteBuffer.wrap(value)); Object result = map.append(v); writeResponseHeader(transfer, session, id); Object result = map.get(map.getKeyType().read(ByteBuffer.wrap(key))); map.getValueType().write(writeBuffer, result); ByteBuffer buffer = writeBuffer.getAndFlipBuffer(); transfer.writeByteBuffer(buffer);
buff.put((byte) map.pageStorageMode.ordinal()); StorageDataType valueType = map.getValueType(); int columnCount = valueType.getColumnCount(); int checkPos = buff.position(); buff.putShort((short) 0).putVarInt(keyLength).putVarInt(columnCount); map.getKeyType().write(buff, keys, keyLength); for (int row = 0; row < keyLength; row++) { valueType.writeMeta(buff, values[row]);
@Override public void writeColumn(DataBuffer buff, Object obj, int columnIndex) { TransactionalValue v = (TransactionalValue) obj; valueType.writeColumn(buff, v.value, columnIndex); }
@Override public void readColumn(ByteBuffer buff, Object obj, int columnIndex) { TransactionalValue v = (TransactionalValue) obj; valueType.readColumn(buff, v.value, columnIndex); }
@Override public int getColumnCount() { return valueType.getColumnCount(); }
public static TransactionalValue readMeta(ByteBuffer buff, StorageDataType valueType, StorageDataType oldValueType, int columnCount) { long tid = DataUtils.readVarLong(buff); if (tid == 0) { Object value = valueType.readMeta(buff, columnCount); return createCommitted(value); } else { return Uncommitted.readMeta(tid, valueType, buff, oldValueType, columnCount); } }
@Override public void writeMeta(DataBuffer buff, Object obj) { TransactionalValue v = (TransactionalValue) obj; v.writeMeta(buff); valueType.writeMeta(buff, v.value); }
default int getMemory(Object obj, int columnIndex) { return getMemory(obj); }
int compressStart = buff.position(); for (int row = 0, rowCount = values.length; row < rowCount; row++) { valueType.writeColumn(buff, values[row], columnIndex);
void readColumnPage(Object[] values, int columnIndex) { this.values = values; this.columnIndex = columnIndex; StorageDataType valueType = map.getValueType(); for (int row = 0, rowCount = values.length; row < rowCount; row++) { valueType.readColumn(buff, values[row], columnIndex); } buff = null; // recalculateMemory(); }
rowLock = true; } else { int columnCount = oldValueType.getColumnCount(); if (columnIndexes.length < (columnCount / 2)) { rowLock = false;
public static Object readValue(ByteBuffer buff, StorageDataType valueType) { Object value = null; if (buff.get() == 1) { value = valueType.read(buff); } return value; }