public ByteString serialize(Bytes bytes) { return ByteString.copyFrom(bytes.get()); }
@Override public boolean equals(Object other) { if (this == other) return true; if (other == null) return false; if (this.hashCode() != other.hashCode()) return false; if (other instanceof Bytes) return Arrays.equals(this.bytes, ((Bytes) other).get()); return false; }
LevelDBRangeIterator(final String storeName, final DBIterator iter, final Bytes from, final Bytes to) { super(storeName, iter); if (from != null) { iter.seek(from.get()); if (iter.hasNext() && comparator.compare(iter.peekNext().getKey(), from.get()) == 0) { iter.next(); } } if (to != null) rawToKey = to.get(); else rawToKey = null; }
@Override public synchronized void put(final Bytes key, final byte[] value) { Objects.requireNonNull(key, "key cannot be null"); validateStoreOpen(); putInternal(key.get(), value); }
@Override public byte[] get(Bytes key) { Objects.requireNonNull(key, "key cannot be null"); try (Txn<byte[]> txn = env.txnRead()) { return dbi.get(txn, key.get()); } }
LMDBRangeIterator(final Bytes from, final Bytes to) { KeyRange<byte[]> keyRange; if (from != null && to != null) { keyRange = KeyRange.open(from.get(), to.get()); } else if (from != null) { keyRange = KeyRange.greaterThan(from.get()); } else if (to != null) { keyRange = KeyRange.lessThan(to.get()); } else { keyRange = KeyRange.all(); } this.txn = env.txnRead(); this.cursorIterator = dbi.iterate(txn, keyRange, Bytes.BYTES_LEXICO_COMPARATOR); }
@Override public byte[] putIfAbsent(Bytes key, byte[] value) { Objects.requireNonNull(key, "key cannot be null"); try (Txn<byte[]> txn = env.txnWrite()) { byte[] oldValue = dbi.get(txn, key.get()); if (oldValue == null) { if (value == null || value.length == 0) { dbi.delete(txn, key.get()); } else { dbi.put(txn, key.get(), value); } } txn.commit(); return oldValue; } }
@Override public synchronized byte[] get(Bytes key) { validateStoreOpen(); return getInternal(key.get()); }
@Override public void putAll(List<KeyValue<Bytes, byte[]>> entries) { try (Txn<byte[]> txn = env.txnWrite()) { for (KeyValue<Bytes, byte[]> entry : entries) { Objects.requireNonNull(entry.key, "key cannot be null"); if (entry.value == null) { dbi.delete(txn, entry.key.get()); } else { dbi.put(txn, entry.key.get(), entry.value); } } txn.commit(); } }
@Override public KeyValue<Bytes, byte[]> makeNext() { final KeyValue<Bytes, byte[]> next = super.makeNext(); if (next == null) { return allDone(); } else { if (rawToKey == null || comparator.compare(next.key.get(), rawToKey) < 0) return next; else return allDone(); } } }
public static Kv.Operand buildOperand(Bytes key, byte[] value) { return Kv.Operand.newBuilder().setKey(ByteString.copyFrom(key.get())) .setValue(ByteString.copyFrom(value)).build(); }
public static Kv.Operand buildOperand(KeyValue<Bytes, byte[]> keyValue) { return Kv.Operand.newBuilder().setKey(ByteString.copyFrom(keyValue.key.get())) .setValue(ByteString.copyFrom(keyValue.value)).build(); }
@Override public void putAll(List<KeyValue<Bytes, byte[]>> entries) { try (final WriteBatch batch = db.createWriteBatch()) { for (final KeyValue<Bytes, byte[]> entry : entries) { Objects.requireNonNull(entry.key, "key cannot be null"); if (entry.value == null) { batch.delete(entry.key.get()); } else { batch.put(entry.key.get(), entry.value); } } write(batch); } catch (IOException e) { throw new ProcessorStateException("Error while batch writing to store " + storeInfo, e); } }
@Override protected KeyValue<Bytes, byte[]> makeNext() { if (iter == null || !iter.hasNext()) { Kv.Range.Builder rangeBuilder = Kv.Range.newBuilder(); if (next != null) { rangeBuilder.setStart(ByteString.copyFrom(next.key.get())); } else if (from != null) { rangeBuilder.setStart(ByteString.copyFrom(from.get())); } iter = blockingStub.iterate(rangeBuilder.buildPartial()); if (!iter.hasNext()) { return allDone(); } } next = POJOUtils.buildKeyValue(iter.next()); if (to == null || next.key.compareTo(to) < 0) { return next; } return allDone(); } }
@Override protected KeyValue<Bytes, byte[]> makeNext() { if (iter == null || !iter.hasNext()) { if (next == null) { iter = blockingStub.iterate(Kv.Range.newBuilder().buildPartial()); } else { iter = blockingStub.iterate(Kv.Range.newBuilder().setStart(ByteString.copyFrom(next.key.get())).buildPartial()); } if (!iter.hasNext()) { return allDone(); } } next = POJOUtils.buildKeyValue(iter.next()); return next; } }
public static Operand createOperand(Bytes key, byte[] value) { FlatBufferBuilder fbb = new FlatBufferBuilder(); int kVec = fbb.createByteVector(key.get()); int vVec; if (value != null) { vVec = fbb.createByteVector(value); } else { vVec = fbb.createByteVector(new byte[0]); } Operand.startOperand(fbb); Operand.addKey(fbb, kVec); Operand.addValue(fbb, vVec); fbb.finish(Operand.endOperand(fbb)); return Operand.getRootAsOperand(fbb.dataBuffer()); } }