/** * Submits the traversal asynchronously to a "remote" using {@link RemoteConnection#submitAsync(Bytecode)}. */ public CompletableFuture<Traversal<?, E>> promise() { try { if (null == traversalFuture.get()) { traversalFuture.set(this.remoteConnection.submitAsync(this.traversal.getBytecode()).<Traversal<?, E>>thenApply(t -> { this.remoteTraversal = (RemoteTraversal<?, E>) t; this.traversal.setSideEffects(this.remoteTraversal.getSideEffects()); return traversal; })); } return traversalFuture.get(); } catch (RemoteConnectionException rce) { throw new IllegalStateException(rce); } } }
public static void applySingleLevelStrategies(final Traversal.Admin<?, ?> parentTraversal, final Traversal.Admin<?, ?> childTraversal, final Class<? extends TraversalStrategy> stopAfterStrategy) { childTraversal.setStrategies(parentTraversal.getStrategies()); childTraversal.setSideEffects(parentTraversal.getSideEffects()); parentTraversal.getGraph().ifPresent(childTraversal::setGraph); for (final TraversalStrategy<?> strategy : parentTraversal.getStrategies().toList()) { strategy.apply(childTraversal); if (null != stopAfterStrategy && stopAfterStrategy.isInstance(strategy)) break; } }
traversal.setSideEffects(translatedTraversal.getSideEffects()); TraversalHelper.removeAllSteps(traversal); TraversalHelper.removeToTraversal((Step) translatedTraversal.getStartStep(), EmptyStep.instance(), traversal);
traversal.setSideEffects(translatedTraversal.getSideEffects()); TraversalHelper.removeAllSteps(traversal); TraversalHelper.removeToTraversal((Step) translatedTraversal.getStartStep(), EmptyStep.instance(), traversal);
for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) { globalChild.setStrategies(this.strategies); globalChild.setSideEffects(this.sideEffects); if (hasGraph) globalChild.setGraph(this.graph); globalChild.applyStrategies(); localChild.setSideEffects(this.sideEffects); if (hasGraph) localChild.setGraph(this.graph); localChild.applyStrategies();
/** * Submits the traversal asynchronously to a "remote" using {@link RemoteConnection#submitAsync(Bytecode)}. */ public CompletableFuture<Traversal<?, E>> promise() { try { if (null == traversalFuture.get()) { traversalFuture.set(this.remoteConnection.submitAsync(this.traversal.getBytecode()).<Traversal<?, E>>thenApply(t -> { this.remoteTraversal = (RemoteTraversal<?, E>) t; this.traversal.setSideEffects(this.remoteTraversal.getSideEffects()); return traversal; })); } return traversalFuture.get(); } catch (RemoteConnectionException rce) { throw new IllegalStateException(rce); } } }
public Builder traversal(Traversal.Admin<?, ?> traversal) { // this is necessary if the job was submitted via TraversalVertexProgram.build() instead of TraversalVertexProgramStep. if (!(traversal.getParent() instanceof TraversalVertexProgramStep)) { final MemoryTraversalSideEffects memoryTraversalSideEffects = new MemoryTraversalSideEffects(traversal.getSideEffects()); final Traversal.Admin<?, ?> parentTraversal = new DefaultTraversal<>(); traversal.getGraph().ifPresent(parentTraversal::setGraph); final TraversalStrategies strategies = traversal.getStrategies().clone(); strategies.addStrategies(ComputerFinalizationStrategy.instance(), ComputerVerificationStrategy.instance(), new VertexProgramStrategy(Computer.compute())); parentTraversal.setStrategies(strategies); traversal.setStrategies(strategies); parentTraversal.setSideEffects(memoryTraversalSideEffects); parentTraversal.addStep(new TraversalVertexProgramStep(parentTraversal, traversal)); traversal = ((TraversalVertexProgramStep) parentTraversal.getStartStep()).getGlobalChildren().get(0); traversal.setSideEffects(memoryTraversalSideEffects); } PureTraversal.storeState(this.configuration, TRAVERSAL, traversal); return this; } }
@Override public TraversalVertexProgram generateProgram(final Graph graph, final Memory memory) { final Traversal.Admin<?, ?> computerSpecificTraversal = this.computerTraversal.getPure(); final TraversalStrategies computerSpecificStrategies = this.getTraversal().getStrategies().clone(); IteratorUtils.filter(TraversalStrategies.GlobalCache.getStrategies(graph.getClass()).toList(), s -> s instanceof TraversalStrategy.ProviderOptimizationStrategy).forEach(computerSpecificStrategies::addStrategies); computerSpecificTraversal.setStrategies(computerSpecificStrategies); computerSpecificTraversal.setSideEffects(new MemoryTraversalSideEffects(this.getTraversal().getSideEffects())); computerSpecificTraversal.setParent(this); final TraversalVertexProgram.Builder builder = TraversalVertexProgram.build().traversal(computerSpecificTraversal); if (memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS)) builder.haltedTraversers(memory.get(TraversalVertexProgram.HALTED_TRAVERSERS)); return builder.create(graph); }
@Override public void setSideEffects(final TraversalSideEffects sideEffects) { if (null != this.bypassTraversal) this.bypassTraversal.setSideEffects(sideEffects); }
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 void applySingleLevelStrategies(final Traversal.Admin<?, ?> parentTraversal, final Traversal.Admin<?, ?> childTraversal, final Class<? extends TraversalStrategy> stopAfterStrategy) { childTraversal.setStrategies(parentTraversal.getStrategies()); childTraversal.setSideEffects(parentTraversal.getSideEffects()); parentTraversal.getGraph().ifPresent(childTraversal::setGraph); for (final TraversalStrategy<?> strategy : parentTraversal.getStrategies().toList()) { strategy.apply(childTraversal); if (null != stopAfterStrategy && stopAfterStrategy.isInstance(strategy)) break; } }
public default <S, E> Traversal.Admin<S, E> integrateChild(final Traversal.Admin<?, ?> childTraversal) { if (null == childTraversal) return null; childTraversal.setParent(this); childTraversal.getSideEffects().mergeInto(this.asStep().getTraversal().getSideEffects()); childTraversal.setSideEffects(this.asStep().getTraversal().getSideEffects()); return (Traversal.Admin<S, E>) childTraversal; }
for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) { globalChild.setStrategies(this.strategies); globalChild.setSideEffects(this.sideEffects); if (hasGraph) globalChild.setGraph(this.graph); globalChild.applyStrategies(); localChild.setSideEffects(this.sideEffects); if (hasGraph) localChild.setGraph(this.graph); localChild.applyStrategies();
public Builder traversal(Traversal.Admin<?, ?> traversal) { // this is necessary if the job was submitted via TraversalVertexProgram.build() instead of TraversalVertexProgramStep. if (!(traversal.getParent() instanceof TraversalVertexProgramStep)) { final MemoryTraversalSideEffects memoryTraversalSideEffects = new MemoryTraversalSideEffects(traversal.getSideEffects()); final Traversal.Admin<?, ?> parentTraversal = new DefaultTraversal<>(); traversal.getGraph().ifPresent(parentTraversal::setGraph); final TraversalStrategies strategies = traversal.getStrategies().clone(); strategies.addStrategies(ComputerFinalizationStrategy.instance(), ComputerVerificationStrategy.instance(), new VertexProgramStrategy(Computer.compute())); parentTraversal.setStrategies(strategies); traversal.setStrategies(strategies); parentTraversal.setSideEffects(memoryTraversalSideEffects); parentTraversal.addStep(new TraversalVertexProgramStep(parentTraversal, traversal)); traversal = ((TraversalVertexProgramStep) parentTraversal.getStartStep()).getGlobalChildren().get(0); traversal.setSideEffects(memoryTraversalSideEffects); } PureTraversal.storeState(this.configuration, TRAVERSAL, traversal); return this; } }
@Override public TraversalVertexProgram generateProgram(final Graph graph, final Memory memory) { final Traversal.Admin<?, ?> computerSpecificTraversal = this.computerTraversal.getPure(); final TraversalStrategies computerSpecificStrategies = this.getTraversal().getStrategies().clone(); IteratorUtils.filter(TraversalStrategies.GlobalCache.getStrategies(graph.getClass()).toList(), s -> s instanceof TraversalStrategy.ProviderOptimizationStrategy).forEach(computerSpecificStrategies::addStrategies); computerSpecificTraversal.setStrategies(computerSpecificStrategies); computerSpecificTraversal.setSideEffects(new MemoryTraversalSideEffects(this.getTraversal().getSideEffects())); computerSpecificTraversal.setParent(this); final TraversalVertexProgram.Builder builder = TraversalVertexProgram.build().traversal(computerSpecificTraversal); if (memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS)) builder.haltedTraversers(memory.get(TraversalVertexProgram.HALTED_TRAVERSERS)); return builder.create(graph); }
public default <S, E> Traversal.Admin<S, E> integrateChild(final Traversal.Admin<?, ?> childTraversal) { if (null == childTraversal) return null; childTraversal.setParent(this); childTraversal.getSideEffects().mergeInto(this.asStep().getTraversal().getSideEffects()); childTraversal.setSideEffects(this.asStep().getTraversal().getSideEffects()); return (Traversal.Admin<S, E>) childTraversal; }
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; }
@Override public void setSideEffects(final TraversalSideEffects sideEffects) { if (null != this.bypassTraversal) this.bypassTraversal.setSideEffects(sideEffects); }