private void putInternal(byte[] key, DAG dag) { byte[] value = encode(dag); try { batch.put(key, value); } catch (RocksDBException e) { throw new RuntimeException(e); } }
public void put(NodeId nodeId, DAGNode node) { byte[] key = toKey(nodeId); byte[] value = encode(node); lock.writeLock().lock(); try { batch.put(key, value); flush(); } catch (RocksDBException e) { throw new RuntimeException(e); } finally { lock.writeLock().unlock(); } }
public void putAll(Map<NodeId, DAGNode> nodeMappings) { ByteArrayOutputStream out = new ByteArrayOutputStream(); lock.writeLock().lock(); try { nodeMappings.forEach((nodeId, dagNode) -> { out.reset(); encode(dagNode, out); byte[] value = out.toByteArray(); byte[] key = toKey(nodeId); try { batch.put(key, value); } catch (RocksDBException e) { throw new RuntimeException(e); } }); flush(); } finally { lock.writeLock().unlock(); } }
public void save(Map<TreeId, DAG> dags) { lock.writeLock().lock(); try { ByteArrayOutputStream buff = new ByteArrayOutputStream(); ByteArrayDataOutput out = ByteStreams.newDataOutput(buff); for (DAG d : dags.values()) { buff.reset(); byte[] key = toKey(d.getId()); byte[] value = encode(d, out); batch.put(key, value); } flush(); } catch (RocksDBException e) { throw new RuntimeException(e); } finally { lock.writeLock().unlock(); } }
private boolean put(RocksDBReference dbref, ObjectId commitId, ImmutableList<ObjectId> parentIds, WriteBatchWithIndex batch) { @Nullable NodeData node = getNodeInternal(dbref, commitId, false, batch); boolean updated = false; if (node == null) { node = new NodeData(commitId, parentIds); updated = true; } for (ObjectId parent : parentIds) { if (!node.outgoing.contains(parent)) { node.outgoing.add(parent); updated = true; } NodeData parentNode = getNodeInternal(dbref, parent, false, batch); if (parentNode == null) { parentNode = new NodeData(parent); updated = true; } if (!parentNode.incoming.contains(commitId)) { parentNode.incoming.add(commitId); updated = true; } batch.put(parent.getRawValue(), BINDING.objectToEntry(parentNode)); } batch.put(commitId.getRawValue(), BINDING.objectToEntry(node)); return updated; }