public void serializeForSSTable(OnDiskAtom atom, DataOutputPlus out) throws IOException { if (atom instanceof Cell) { type.columnSerializer().serialize((Cell)atom, out); } else { assert atom instanceof RangeTombstone; type.rangeTombstoneSerializer().serializeForSSTable((RangeTombstone)atom, out); } }
public long serializedSizeForSSTable(OnDiskAtom atom) { if (atom instanceof Cell) { return type.columnSerializer().serializedSize((Cell)atom, TypeSizes.NATIVE); } else { assert atom instanceof RangeTombstone; return type.rangeTombstoneSerializer().serializedSizeForSSTable((RangeTombstone)atom); } } }
/** * Skips the next atom. */ public void skipNext() throws IOException { nameDeserializer.skipNext(); nextFlags = nextFlags == Integer.MIN_VALUE ? in.readUnsignedByte() : nextFlags; if ((nextFlags & ColumnSerializer.RANGE_TOMBSTONE_MASK) != 0) type.rangeTombstoneSerializer().skipBody(in, version); else type.columnSerializer().skipColumnBody(in, nextFlags); nextFlags = Integer.MIN_VALUE; } }
/** * Returns the next atom. */ public OnDiskAtom readNext() throws IOException { Composite name = nameDeserializer.readNext(); assert !name.isEmpty(); // This would imply hasNext() hasn't been called nextFlags = nextFlags == Integer.MIN_VALUE ? in.readUnsignedByte() : nextFlags; OnDiskAtom atom = (nextFlags & ColumnSerializer.RANGE_TOMBSTONE_MASK) != 0 ? type.rangeTombstoneSerializer().deserializeBody(in, name, version) : type.columnSerializer().deserializeColumnBody(in, (CellName)name, nextFlags, flag, expireBefore); nextFlags = Integer.MIN_VALUE; return atom; }
public OnDiskAtom deserializeFromSSTable(DataInput in, ColumnSerializer.Flag flag, int expireBefore, Descriptor.Version version) throws IOException { Composite name = type.serializer().deserialize(in); if (name.isEmpty()) { // SSTableWriter.END_OF_ROW return null; } int b = in.readUnsignedByte(); if ((b & ColumnSerializer.RANGE_TOMBSTONE_MASK) != 0) return type.rangeTombstoneSerializer().deserializeBody(in, name, version); else return type.columnSerializer().deserializeColumnBody(in, (CellName)name, b, flag, expireBefore); }
List<Cell> subCells = new ArrayList<>(size); ColumnSerializer colSer = subType(type).columnSerializer(); for (int i = 0; i < size; ++i) subCells.add(colSer.deserialize(in, flag, expireBefore));
public long contentSerializedSize(ColumnFamily cf, TypeSizes typeSizes, int version) { long size = cf.getComparator().deletionInfoSerializer().serializedSize(cf.deletionInfo(), typeSizes, version); size += typeSizes.sizeof(cf.getColumnCount()); ColumnSerializer columnSerializer = cf.getComparator().columnSerializer(); for (Cell cell : cf) size += columnSerializer.serializedSize(cell, typeSizes); return size; }
public ColumnFamily deserialize(DataInput in, ColumnFamily.Factory factory, ColumnSerializer.Flag flag, int version) throws IOException { if (!in.readBoolean()) return null; ColumnFamily cf = factory.create(Schema.instance.getCFMetaData(deserializeCfId(in, version))); if (cf.metadata().isSuper() && version < MessagingService.VERSION_20) { SuperColumns.deserializerSuperColumnFamily(in, cf, flag, version); } else { cf.delete(cf.getComparator().deletionInfoSerializer().deserialize(in, version)); ColumnSerializer columnSerializer = cf.getComparator().columnSerializer(); int size = in.readInt(); for (int i = 0; i < size; ++i) cf.addColumn(columnSerializer.deserialize(in, flag)); } return cf; }
public void serialize(ColumnFamily cf, DataOutputPlus out, int version) { try { if (cf == null) { out.writeBoolean(false); return; } out.writeBoolean(true); serializeCfId(cf.id(), out, version); cf.getComparator().deletionInfoSerializer().serialize(cf.deletionInfo(), out, version); ColumnSerializer columnSerializer = cf.getComparator().columnSerializer(); int count = cf.getColumnCount(); out.writeInt(count); int written = 0; for (Cell cell : cf) { columnSerializer.serialize(cell, out); written++; } assert count == written: "Column family had " + count + " columns, but " + written + " written"; } catch (IOException e) { throw new RuntimeException(e); } }