view src/main/java/christie/test/topology/paxos/acceptor/PromiseCodeGear.java @ 183:1bffd8151c6a

fix paxos
author akahori
date Sat, 02 Feb 2019 15:19:20 +0900
parents 33b4966d4d24
children 2d0d41b648fa
line wrap: on
line source

package christie.test.topology.paxos.acceptor;

import christie.annotation.Take;
import christie.codegear.CodeGear;
import christie.codegear.CodeGearManager;
import christie.test.topology.paxos.Proposal;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class PromiseCodeGear extends CodeGear {

    @Take
    Proposal promisedProposal;

    @Take
    Proposal prepareProposal;

    Logger logger = LogManager.getLogger(PromiseCodeGear.class);


    public PromiseCodeGear(){ }

    @Override
    protected void run(CodeGearManager cgm) {
        if(promisedProposal.getNumber() < prepareProposal.getNumber()) {
            if(promisedProposal.isAccepted()){
                promisedProposal.setNumber(prepareProposal.getNumber());
            }else{
                promisedProposal = prepareProposal;
            }
        }
        put("promisedProposal", promisedProposal);
        logger.debug("promise " + promisedProposal);
        put(prepareProposal.getProposerName(),"receivePromise", promisedProposal);
        cgm.setup(new PromiseCodeGear());
    }

}