public RowIndexEntry deserialize(DataInput in, Descriptor.Version version) throws IOException { long position = in.readLong(); int size = in.readInt(); if (size > 0) { DeletionTime deletionTime = DeletionTime.serializer.deserialize(in); int entries = in.readInt(); ISerializer<IndexHelper.IndexInfo> idxSerializer = type.indexSerializer(); List<IndexHelper.IndexInfo> columnsIndex = new ArrayList<IndexHelper.IndexInfo>(entries); for (int i = 0; i < entries; i++) columnsIndex.add(idxSerializer.deserialize(in)); return new IndexedEntry(position, deletionTime, columnsIndex); } else { return new RowIndexEntry(position); } }
@Override public int promotedSize(CType type) { TypeSizes typeSizes = TypeSizes.NATIVE; long size = DeletionTime.serializer.serializedSize(deletionTime, typeSizes); size += typeSizes.sizeof(columnsIndex.size()); // number of entries ISerializer<IndexHelper.IndexInfo> idxSerializer = type.indexSerializer(); for (IndexHelper.IndexInfo info : columnsIndex) size += idxSerializer.serializedSize(info, typeSizes); return Ints.checkedCast(size); }
/** * Deserialize the index into a structure and return it * * @param in input source * @param type the comparator type for the column family * * @return ArrayList<IndexInfo> - list of de-serialized indexes * @throws IOException if an I/O error occurs. */ public static List<IndexInfo> deserializeIndex(FileDataInput in, CType type) throws IOException { int columnIndexSize = in.readInt(); if (columnIndexSize == 0) return Collections.<IndexInfo>emptyList(); ArrayList<IndexInfo> indexList = new ArrayList<IndexInfo>(); FileMark mark = in.mark(); ISerializer<IndexInfo> serializer = type.indexSerializer(); while (in.bytesPastMark(mark) < columnIndexSize) { indexList.add(serializer.deserialize(in)); } assert in.bytesPastMark(mark) == columnIndexSize; return indexList; }
public void serialize(RowIndexEntry rie, DataOutputPlus out) throws IOException { out.writeLong(rie.position); out.writeInt(rie.promotedSize(type)); if (rie.isIndexed()) { DeletionTime.serializer.serialize(rie.deletionTime(), out); out.writeInt(rie.columnsIndex().size()); ISerializer<IndexHelper.IndexInfo> idxSerializer = type.indexSerializer(); for (IndexHelper.IndexInfo info : rie.columnsIndex()) idxSerializer.serialize(info, out); } }
public int serializedSize(RowIndexEntry rie) { int size = TypeSizes.NATIVE.sizeof(rie.position) + TypeSizes.NATIVE.sizeof(rie.promotedSize(type)); if (rie.isIndexed()) { List<IndexHelper.IndexInfo> index = rie.columnsIndex(); size += DeletionTime.serializer.serializedSize(rie.deletionTime(), TypeSizes.NATIVE); size += TypeSizes.NATIVE.sizeof(index.size()); ISerializer<IndexHelper.IndexInfo> idxSerializer = type.indexSerializer(); for (IndexHelper.IndexInfo info : index) size += idxSerializer.serializedSize(info, TypeSizes.NATIVE); } return size; } }