annotate src/main/java/suikwasha/distributedalgorithm/simulator/SyncMachineBuilder.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.Machine;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
5 import suikwasha.distributedalgorithm.framework.MachineBuilder;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
6 import suikwasha.distributedalgorithm.framework.Port;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
7
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
8 public class SyncMachineBuilder implements MachineBuilder
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
9 {
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
10 private final MachineBuilder builder;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
11 private final Synchronizer synchronizer;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
12
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
13 public SyncMachineBuilder(MachineBuilder _builder)
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
14 {
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
15 builder = _builder;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
16 synchronizer = new Synchronizer();
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
17 }
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
18
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
19 public Machine createMachine(Algorithm _algo)
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
20 {
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
21 Machine newMachine = builder.createMachine(_algo);
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
22 synchronizer.countup();
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
23 return new SyncMachine(synchronizer,newMachine);
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 Synchronizer getSynchronizer()
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
27 {
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
28 return synchronizer;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
29 }
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
30
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
31 private static class SyncMachine extends Machine
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
32 {
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
33 private final Synchronizer synchronizer;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
34 private final Machine machine;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
35
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
36 public SyncMachine(Synchronizer _synchronizer,Machine _machine)
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
37 {
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
38 synchronizer = _synchronizer;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
39 machine = _machine;
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
40 }
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
41
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
42 public void addPort(Port _p)
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
43 {
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
44 machine.addPort(_p);
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
45 }
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
46
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
47 public void run()
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
48 {
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
49 machine.run();
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
50 synchronizer.countdown();
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
51 }
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
52 }
38a110b13db1 added SimpleDistributedAlgorithmFramework.
suikwasha
parents:
diff changeset
53 }