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