@Override public void saveNode(NodeId nodeId, Node node) { nodes.put(nodeId, DAGNode.of(node)); }
@Override public Map<NodeId, Node> getNodes(final Set<NodeId> nodeIds) { Map<NodeId, Node> res = new HashMap<>(); nodeIds.forEach((nid) -> { DAGNode dagNode = nodes.get(nid); Preconditions.checkState(dagNode != null); Node node = dagNode.resolve(treeCache); res.put(nid, node); }); return res; }
private DAGNode decode(byte[] nodeData) { DAGNode node; try { node = DAGNode.decode(ByteStreams.newDataInput(nodeData)); } catch (IOException e) { throw Throwables.propagate(e); } return node; } }
public static DAGNode decode(DataInput in) throws IOException { final byte magic = in.readByte(); switch (magic) { case MAGIC_DIRECT: { Node node = FormatCommonV2_2.INSTANCE.readNode(in); return DAGNode.of(node); } case MAGIC_LAZY_TREE: { int treeCacheId = Varint.readUnsignedVarInt(in); int nodeIndex = Varint.readUnsignedVarInt(in); DAGNode node = DAGNode.treeNode(treeCacheId, nodeIndex); return node; } case MAGIC_LAZY_FEATURE: { int treeCacheId = Varint.readUnsignedVarInt(in); int nodeIndex = Varint.readUnsignedVarInt(in); DAGNode node = DAGNode.featureNode(treeCacheId, nodeIndex); return node; } } throw new IllegalArgumentException("Invalid magic number, expected 7 or 9, got " + magic); }
@Test public void lazyFeatureNodeResolve() { DAGNode node = DAGNode.featureNode(5, 511); when(cache.resolve(eq(5))).thenReturn(featuresTree); Node resolved = node.resolve(cache); assertNotNull(resolved); Node expected = featuresTree.features().get(511); RevObjectTestUtil.deepEquals(expected, resolved); }
private Map<NodeId, DAGNode> lazyNodes(final RevTree tree) { if (tree.isEmpty()) { return ImmutableMap.of(); } final TreeCache treeCache = storageProvider.getTreeCache(); final int cacheTreeId = treeCache.getTreeId(tree).intValue(); Map<NodeId, DAGNode> dagNodes = new HashMap<>(); List<Node> treeNodes = tree.trees(); for (int i = 0; i < treeNodes.size(); i++) { NodeId nodeId = computeId(treeNodes.get(i)); DAGNode dagNode = DAGNode.treeNode(cacheTreeId, i); dagNodes.put(nodeId, dagNode); } ImmutableList<Node> featureNodes = tree.features(); for (int i = 0; i < featureNodes.size(); i++) { NodeId nodeId = computeId(featureNodes.get(i)); DAGNode dagNode = DAGNode.featureNode(cacheTreeId, i); dagNodes.put(nodeId, dagNode); } return dagNodes; }
@Test public void lazyFeatureNodeEncodeDecode() throws IOException { DAGNode node = DAGNode.featureNode(5, 511); ByteArrayDataOutput out = ByteStreams.newDataOutput(); DAGNode.encode(node, out); DAGNode decoded = DAGNode.decode(ByteStreams.newDataInput(out.toByteArray())); assertEquals(node, decoded); } }
@Test public void lazyFeatureNodeEquals() { DAGNode node = DAGNode.featureNode(5, 511); assertEquals(node, DAGNode.featureNode(5, 511)); assertNotEquals(node, DAGNode.featureNode(5, 510)); assertNotEquals(node, DAGNode.featureNode(4, 511)); }
@Test public void lazyFeatureNodeCreate() { DAGNode node = DAGNode.featureNode(5, 511); assertTrue(node instanceof FeatureDAGNode); FeatureDAGNode fnode = (FeatureDAGNode) node; assertEquals(5, fnode.leafRevTreeId); assertEquals(511, fnode.nodeIndex); assertFalse("a lazy feature node can never be nil", node.isNull()); }
private byte[] encode(DAGNode node, ByteArrayOutputStream outstream) { DataOutputStream out = new DataOutputStream(outstream); try { DAGNode.encode(node, out); out.flush(); } catch (IOException e) { throw Throwables.propagate(e); } return outstream.toByteArray(); }
public static DAGNode decode(DataInput in) throws IOException { final byte magic = in.readByte(); switch (magic) { case MAGIC_DIRECT: { Node node = FormatCommonV2_2.INSTANCE.readNode(in); return DAGNode.of(node); } case MAGIC_LAZY_TREE: { int treeCacheId = Varint.readUnsignedVarInt(in); int nodeIndex = Varint.readUnsignedVarInt(in); DAGNode node = DAGNode.treeNode(treeCacheId, nodeIndex); return node; } case MAGIC_LAZY_FEATURE: { int treeCacheId = Varint.readUnsignedVarInt(in); int nodeIndex = Varint.readUnsignedVarInt(in); DAGNode node = DAGNode.featureNode(treeCacheId, nodeIndex); return node; } } throw new IllegalArgumentException("Invalid magic number, expected 7 or 9, got " + magic); }
@Test public void lazyFeatureNodeResolve() { DAGNode node = DAGNode.featureNode(5, 511); when(cache.resolve(eq(5))).thenReturn(featuresTree); Node resolved = node.resolve(cache); assertNotNull(resolved); assertSame(featuresTree.features().get(511), resolved); }
private Map<NodeId, DAGNode> lazyNodes(final RevTree tree) { if (tree.isEmpty()) { return Collections.emptyMap(); } final TreeCache treeCache = storageProvider.getTreeCache(); final int cacheTreeId = treeCache.getTreeId(tree).intValue(); Map<NodeId, DAGNode> dagNodes = new HashMap<>(); final int treesSize = tree.treesSize(); for (int i = 0; i < treesSize; i++) { NodeId nodeId = computeId(tree.getTree(i)); DAGNode dagNode = DAGNode.treeNode(cacheTreeId, i); dagNodes.put(nodeId, dagNode); } final int featuresSize = tree.featuresSize(); for (int i = 0; i < featuresSize; i++) { NodeId nodeId = computeId(tree.getFeature(i)); DAGNode dagNode = DAGNode.featureNode(cacheTreeId, i); dagNodes.put(nodeId, dagNode); } return dagNodes; }
@Test public void lazyFeatureNodeEquals() { DAGNode node = DAGNode.featureNode(5, 511); assertEquals(node, DAGNode.featureNode(5, 511)); assertNotEquals(node, DAGNode.featureNode(5, 510)); assertNotEquals(node, DAGNode.featureNode(4, 511)); }
@Test public void lazyFeatureNodeCreate() { DAGNode node = DAGNode.featureNode(5, 511); assertTrue(node instanceof FeatureDAGNode); FeatureDAGNode fnode = (FeatureDAGNode) node; assertEquals(5, fnode.leafRevTreeId); assertEquals(511, fnode.nodeIndex); assertFalse("a lazy feature node can never be nil", node.isNull()); }
@Override public void saveNode(NodeId nodeId, Node node) { nodes.put(nodeId, DAGNode.of(node)); }
@Test public void lazyFeatureNodeEncodeDecode() throws IOException { DAGNode node = DAGNode.featureNode(5, 511); ByteArrayDataOutput out = ByteStreams.newDataOutput(); DAGSerializer.encode(node, out); DAGNode decoded = DAGSerializer.decode(ByteStreams.newDataInput(out.toByteArray())); assertEquals(node, decoded); }
@Override public Map<NodeId, Node> getNodes(final Set<NodeId> nodeIds) { Map<NodeId, Node> res = new HashMap<>(); nodeIds.forEach((nid) -> { DAGNode dagNode = nodes.get(nid); Preconditions.checkState(dagNode != null); Node node = dagNode.resolve(treeCache); res.put(nid, node); }); return res; }
@Override public void saveNode(NodeId nodeId, Node node) { nodeStore.put(nodeId, DAGNode.of(node)); }
@Override public Map<NodeId, Node> getNodes(final Set<NodeId> nodeIds) { Map<NodeId, DAGNode> dagNodes = nodeStore.getAll(nodeIds); return Maps.transformValues(dagNodes, (dn) -> dn.resolve(treeCache)); }