view 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
line wrap: on
line source

package christie.test.topology.paxos.acceptor;

import christie.test.topology.paxos.Proposal;

// singleton
public class PromiseProposal {
    Proposal promiseProposal = null;

    private static PromiseProposal instance = new PromiseProposal();


    private Object _lock = new Object();

    private boolean sync = false;

    public void setPromiseProposal(Proposal promiseProposal){
        this.promiseProposal = promiseProposal;
    }

    public Proposal getPromiseProposal() {
        return promiseProposal;
    }

    public synchronized static PromiseProposal getInstance(){
        return instance;
    }

    public void lock(){
        synchronized (_lock){
            while(sync){
                try {
                    _lock.wait();
                } catch (InterruptedException e) {
                }
            }
        }
        sync = true;
    }

    public void unLock(){
        synchronized (_lock){
            _lock.notify();
            sync = false;
        }
    }
}