Mercurial > hg > Database > Christie
view src/main/java/christie/test/topology/paxos/proposer/ReceivePromiseCodeGear.java @ 159:a0391cfdcef6
update topologymanager
author | akahori |
---|---|
date | Mon, 21 Jan 2019 18:02:49 +0900 |
parents | src/main/java/christie/test/Paxos/proposer/ReceivePromiseCodeGear.java@7a2108775da7 |
children | c6250ad544e0 |
line wrap: on
line source
package christie.test.topology.paxos.proposer; import christie.annotation.Take; import christie.codegear.CodeGear; import christie.codegear.CodeGearManager; import christie.test.topology.paxos.Proposal; public class ReceivePromiseCodeGear extends CodeGear{ @Take Proposal sendedProposal; @Take Proposal receivePromise; @Take int promiseCount; @Override protected void run(CodeGearManager cgm) { promiseCount++; if(receivePromise.isAccepted()){ if(sendedProposal.isAccepted()){ if(receivePromise.getNumber() > sendedProposal.getNumber()){ put("sendedProposal", receivePromise); }else{ put("sendedProposal", sendedProposal); } }else{ sendedProposal.setValue(receivePromise.getValue()); put("sendedProposal", sendedProposal); } }else{ if(receivePromise.getNumber() > sendedProposal.getNumber()){ promiseCount = 0; sendedProposal.incrementNumber(); put("sendProposal", sendedProposal); cgm.setup(new SendPrepareRequestCodeGear()); }else{ put("sendedProposal", sendedProposal); } } System.out.println("recieve"); put("promiseCount", promiseCount); if(promiseCount > sendedProposal.getAcceptorNum()/2){ put("acceptProposal", sendedProposal); cgm.setup(new SendAcceptRequestCodeGear()); }else { cgm.setup(new ReceivePromiseCodeGear()); } } }