annotate src/main/java/christie/test/topology/paxos/acceptor/PromiseProposal.java @ 190:2d0d41b648fa

add PromiseProposal and refactor acceptor
author akahori
date Tue, 12 Feb 2019 16:10:15 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
190
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
1 package christie.test.topology.paxos.acceptor;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
2
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
3 import christie.test.topology.paxos.Proposal;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
4
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
5 // singleton
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
6 public class PromiseProposal {
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
7 Proposal promiseProposal = null;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
8
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
9 private static PromiseProposal instance = new PromiseProposal();
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
10
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
11
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
12 private Object _lock = new Object();
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
13
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
14 private boolean sync = false;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
15
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
16 public void setPromiseProposal(Proposal promiseProposal){
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
17 this.promiseProposal = promiseProposal;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
18 }
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
19
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
20 public Proposal getPromiseProposal() {
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
21 return promiseProposal;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
22 }
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
23
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
24 public synchronized static PromiseProposal getInstance(){
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
25 return instance;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
26 }
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
27
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
28 public void lock(){
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
29 synchronized (_lock){
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
30 while(sync){
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
31 try {
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
32 _lock.wait();
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
33 } catch (InterruptedException e) {
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
34 }
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
35 }
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
36 }
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
37 sync = true;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
38 }
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
39
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
40 public void unLock(){
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
41 synchronized (_lock){
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
42 _lock.notify();
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
43 sync = false;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
44 }
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
45 }
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents:
diff changeset
46 }