public AbstractObjectStore() { this(new RevObjectSerializerProxy()); }
/** * Reads object from its binary representation as stored in the database. */ public RevObject decode(final ObjectId id, final byte[] bytes) { return read(id, bytes, 0, bytes.length); }
public byte[] encode(final RevObject o) { try (ByteArrayOutputStream bout = new ByteArrayOutputStream()) { write(o, bout); byte[] bytes = bout.toByteArray(); return bytes; } catch (Exception e) { throw new RuntimeException("Error encoding object " + o, e); } }
@Override public RevObject read(ObjectId id, InputStream in) throws IOException { final int serialVersionHeader = in.read(); assert serialVersionHeader >= 0 && serialVersionHeader <= maxFormatCode; final RevObjectSerializer serializer = serializer(id, serialVersionHeader); RevObject revObject = serializer.read(id, in); return revObject; }
@Override public RevObject read(@Nullable ObjectId id, byte[] data, int offset, int length) { final int serialVersionHeader = data[offset] & 0xFF; assert serialVersionHeader >= 0 && serialVersionHeader <= maxFormatCode; final RevObjectSerializer serializer = serializer(id, serialVersionHeader); RevObject revObject; try { revObject = serializer.read(id, data, offset + 1, length - 1); } catch (IOException e) { throw new RuntimeException("Error reading object " + id, e); } return revObject; }
protected synchronized void open(Set<String> columnFamilyNames) { if (isOpen()) { return; } Map<String, String> defaultMetadata = ImmutableMap.of("version", RocksdbStorageProvider.VERSION, "serializer", "proxy"); DBConfig address = new DBConfig(path, readOnly, defaultMetadata, columnFamilyNames); this.dbhandle = RocksConnectionManager.INSTANCE.acquire(address); this.bulkReadOptions = new ReadOptions(); this.bulkReadOptions.setFillCache(false); this.bulkReadOptions.setVerifyChecksums(false); RevObjectSerializer defaultSerializer = new RevObjectSerializerProxy(); RevObjectSerializer serializer = defaultSerializer; final Optional<String> serializerValue = dbhandle.getMetadata("serializer"); if (serializerValue.isPresent()) { String sval = serializerValue.get(); Preconditions.checkState("proxy".equals(sval), "serialization factory metadata error: expected 'proxy', got '%s'", sval); } else { // pre 1.0 serializer, for backwards compatibility with repos created before initial // release serializer = new RevObjectSerializerLZF(DataStreamRevObjectSerializerV2.INSTANCE); } super.setSerializationFactory(serializer); open = true; }