Mercurial > hg > Members > shoshi > distributedalgorithm
view src/main/java/suikwasha/distributedalgorithm/simulator/Simulator.java @ 0:38a110b13db1
added SimpleDistributedAlgorithmFramework.
added NaiveAlgorithm
added ChangRobertsAlgorithm
added PertersonAlgorithm
author | suikwasha |
---|---|
date | Fri, 19 Oct 2012 00:05:41 +0900 |
parents | |
children |
line wrap: on
line source
package suikwasha.distributedalgorithm.simulator; import suikwasha.distributedalgorithm.framework.Algorithm; import suikwasha.distributedalgorithm.framework.LinkBuilder; import suikwasha.distributedalgorithm.framework.Machine; import suikwasha.distributedalgorithm.framework.MachineBuilder; import suikwasha.distributedalgorithm.framework.Topology; import suikwasha.distributedalgorithm.framework.TopologyBuilder; public class Simulator { private final Iterable<Algorithm> algos; private final LinkBuilder linkBuilder; private final MachineBuilder machineBuilder; private final TopologyBuilder topologyBuilder; public Simulator(Iterable<Algorithm> _algos,LinkBuilder _linkBuilder ,MachineBuilder _machineBuilder,TopologyBuilder _topologyBuilder) { algos = _algos; linkBuilder = _linkBuilder; machineBuilder = _machineBuilder; topologyBuilder = _topologyBuilder; } public Summary startSimulation() throws InterruptedException { Summary summary = new Summary(); LoggingMessageLinkBuilder logLinkBuilder = new LoggingMessageLinkBuilder(summary,linkBuilder); SyncMachineBuilder syncMachineBuilder = new SyncMachineBuilder(machineBuilder); Topology topologies = topologyBuilder.build(algos,syncMachineBuilder,logLinkBuilder); for(Machine machine : topologies.getMachines()){ machine.start(); } Synchronizer sync = syncMachineBuilder.getSynchronizer(); sync.await(); return summary; } }