package edu.ucsb.jpregel.system;
import api.Aggregator;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Immutable
*
* @author Pete Cappello
*/
final public class ComputeOutput implements java.io.Serializable
{
final private boolean thereIsANextStep;
final private Map<Integer, Map<Object, MessageQ>> workerNumToVertexIdToMessageQMapMap;
final private Aggregator stepAggregator;
final private Aggregator problemAggregator;
final private AtomicInteger deltaNumVertices;
// Used by Vertex
ComputeOutput( boolean thereIsANextStep,
Map<Integer, Map<Object, MessageQ>> workerNumToVertexIdToMessageQMapMap,
Aggregator stepAggregator, Aggregator problemAggregator )
{
this.thereIsANextStep = thereIsANextStep;
this.workerNumToVertexIdToMessageQMapMap = workerNumToVertexIdToMessageQMapMap;
this.stepAggregator = stepAggregator;
this.problemAggregator = problemAggregator;
deltaNumVertices = new AtomicInteger();
}
ComputeOutput( boolean thereIsANextStep, Aggregator stepAggregator, Aggregator problemAggregator, AtomicInteger deltaNumVertices )
{
this.thereIsANextStep = thereIsANextStep;
this.workerNumToVertexIdToMessageQMapMap = null;
this.stepAggregator = stepAggregator;
this.problemAggregator = problemAggregator;
this.deltaNumVertices = deltaNumVertices;
}
boolean getThereIsANextStep() { return thereIsANextStep; }
Map<Integer, Map<Object, MessageQ>> getWorkerNumToVertexIdToMessageQMapMap()
{
return workerNumToVertexIdToMessageQMapMap;
}
Aggregator getStepAggregator() { return stepAggregator; }
Aggregator getProblemAggregator() { return problemAggregator; }
int deltaNumVertices() { return deltaNumVertices.get(); }
}