comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:38a110b13db1
1 package suikwasha.distributedalgorithm.simulator;
2
3 import suikwasha.distributedalgorithm.framework.Algorithm;
4 import suikwasha.distributedalgorithm.framework.LinkBuilder;
5 import suikwasha.distributedalgorithm.framework.Machine;
6 import suikwasha.distributedalgorithm.framework.MachineBuilder;
7 import suikwasha.distributedalgorithm.framework.Topology;
8 import suikwasha.distributedalgorithm.framework.TopologyBuilder;
9
10 public class Simulator
11 {
12 private final Iterable<Algorithm> algos;
13 private final LinkBuilder linkBuilder;
14 private final MachineBuilder machineBuilder;
15 private final TopologyBuilder topologyBuilder;
16
17 public Simulator(Iterable<Algorithm> _algos,LinkBuilder _linkBuilder
18 ,MachineBuilder _machineBuilder,TopologyBuilder _topologyBuilder)
19 {
20 algos = _algos;
21 linkBuilder = _linkBuilder;
22 machineBuilder = _machineBuilder;
23 topologyBuilder = _topologyBuilder;
24 }
25
26 public Summary startSimulation() throws InterruptedException
27 {
28 Summary summary = new Summary();
29 LoggingMessageLinkBuilder logLinkBuilder = new LoggingMessageLinkBuilder(summary,linkBuilder);
30 SyncMachineBuilder syncMachineBuilder = new SyncMachineBuilder(machineBuilder);
31
32 Topology topologies = topologyBuilder.build(algos,syncMachineBuilder,logLinkBuilder);
33
34 for(Machine machine : topologies.getMachines()){
35 machine.start();
36 }
37
38 Synchronizer sync = syncMachineBuilder.getSynchronizer();
39 sync.await();
40
41 return summary;
42 }
43 }