public static void setMemorySideEffects( final Traversal.Admin<?, ?> traversal, final Memory memory, final ProgramPhase phase) { final TraversalSideEffects sideEffects = traversal.getSideEffects(); if (!(sideEffects instanceof MemoryTraversalSideEffects)) { traversal.setSideEffects(new MemoryTraversalSideEffects(sideEffects)); } final MemoryTraversalSideEffects memoryTraversalSideEffects = ((MemoryTraversalSideEffects) traversal.getSideEffects()); memoryTraversalSideEffects.memory = memory; memoryTraversalSideEffects.phase = phase; }
public static Set<MemoryComputeKey> getMemoryComputeKeys(final Traversal.Admin<?, ?> traversal) { final Set<MemoryComputeKey> keys = new HashSet<>(); final TraversalSideEffects sideEffects = traversal.getSideEffects() instanceof MemoryTraversalSideEffects ? ((MemoryTraversalSideEffects) traversal.getSideEffects()).getSideEffects() : traversal.getSideEffects(); sideEffects .keys() .stream() .forEach( key -> keys.add(MemoryComputeKey.of(key, sideEffects.getReducer(key), true, false))); return keys; }