@Deprecated public static <T extends MessageSchema<T>> ReplicatorStage<T> instance(GraphManager gm, Pipe<T> source, Pipe<T> ... targets) { return newInstance(gm, source, targets); }
@SuppressWarnings("unchecked") public static <T extends MessageSchema<T>> ReplicatorStage<T> newInstance(GraphManager gm, Pipe<T> source, Pipe<T> ... targets) { return new ReplicatorStage<T>(gm,source,targets); }
findStableCutPoint(ss); if (doneCopy(ss, ss.byteTailPos, ss.source.slabMask & (int)ss.cachedTail, (int)ss.totalPrimaryCopy, ss.totalBytesCopy)) { recordCopyComplete(ss, ss.tempByteTail, ss.totalBytesCopy);
@Override public void shutdown() { //if we are in the middle of a partial copy push the data out, this is blocking while (0!=totalPrimaryCopy) { //if all the copies are done then record it as complete, does as much work as possible each time its called. if (doneCopy(this, byteTailPos, source.slabMask & (int)cachedTail, (int)totalPrimaryCopy, totalBytesCopy)) { recordCopyComplete(this, tempByteTail, totalBytesCopy); } } }
/** * * @param gm * @param source _in_ Any input pipe that will be replicated. * @param a _out_ Target pipe; will be joined with b. * @param b _out_ Target pipe; will be joined with a. */ public ReplicatorStage(GraphManager gm, Pipe<T> source, Pipe<T> a, Pipe<T> b) { this(gm,source,join(a,b)); }
@Override public void run() { processAvailData(this); }
super(gm,source,targets); assert(noDuplicaateTargets(targets)) : "can not replicate to the same target pipe mutiple times";
private static <S extends MessageSchema<S>> boolean doneCopy(ReplicatorStage<S> ss, int byteTailPos, int primaryTailPos, int totalPrimaryCopy, int totalBytesCopy) { int c = 0; int[] working = ss.working; int limit = ss.workingPos; for(int j=0; j<limit; j++) { Pipe<S> target = ss.targets[working[j]]; if (Pipe.hasRoomForWrite(target, totalPrimaryCopy)) { Pipe.confirmLowLevelWriteUnchecked(target, totalPrimaryCopy); copyData(ss, byteTailPos, totalBytesCopy, primaryTailPos, totalPrimaryCopy, target); Pipe.sumWrittenFragments(target, ss.totalFragmentsCopy); Pipe.notifyPubListener(target); } else { working[c++] = working[j]; } } ss.workingPos = c; return 0==c; //returns false when there are still targets to write }
public void buildReplicators(GraphManager gm, ArrayList<ReactiveManagerPipeConsumer> consumers) { int i = inputPipes.length; while (--i>=0) { if (1 == groupedPipes[i].length) { //swap back to using direct connection int c = consumers.size(); while (--c>=0) { if (consumers.get(c).swapIfFound(groupedPipes[i][0], inputPipes[i])) { break; } } if (c<0) { //can not optimize this case so just add the extra hop. logger.info("internal error unable to find this pipe! Hello Guys!"); ReplicatorStage.newInstance(gm, inputPipes[i], groupedPipes[i]); } } else { ReplicatorStage.newInstance(gm, inputPipes[i], groupedPipes[i]); } } }
new ReplicatorStage<RowSchema<M>>(gm, leftInput, splitterPipes); //duplicate the matrix once for each column.
public static <T extends MessageSchema<T>> Pipe<T> attach(boolean debug, GraphManager gm, Pipe<T> source, Appendable console) { if (debug) { Pipe<T> out1 = new Pipe<T>(source.config().grow2x()); Pipe<T> out2 = new Pipe<T>(source.config().grow2x()); ReplicatorStage.newInstance(gm, source, out1, out2); ConsoleJSONDumpStage.newInstance(gm, out1, console); return out2; } else { return source; } }
new ReplicatorStage(gm, inputPipe, midCheckPipe, outputPipe);
ReplicatorStage.newInstance(gm, src, trgts);
GraphManager.addNota(gm, GraphManager.SCHEDULE_RATE, Integer.valueOf(0), new RoundRobinRouteStage(gm, rings[j++], splitsBuffers)); } else { GraphManager.addNota(gm, GraphManager.SCHEDULE_RATE, Integer.valueOf(0), new ReplicatorStage(gm, rings[j++], splitsBuffers));
} else { assert(requestPipes.size() == size); ReplicatorStage.newInstance(gm, fromRouterToModules[t][routeIndex], requestPipes.toArray(new Pipe[requestPipes.size()]));
ReplicatorStage splitter = new ReplicatorStage(gm, getOutputPipe(gm, generator), pipe(busConfig.grow2x()), pipe(busConfig.grow2x())); PronghornStage validateResults = new TestValidator(gm, getOutputPipe(gm, splitter, 2), getOutputPipe(gm, splitter, 1));
doFinalOutput2); ReplicatorStage.newInstance(gm, encryptedDataPipe, encryptedDataPipeA, encryptedDataPipeB);