Mercurial > hg > Database > Christie
view src/main/java/christie/test/topology/paxos/proposer/ReceivePromiseCodeGear.java @ 181:33b4966d4d24
update paxos
author | akahori |
---|---|
date | Sat, 02 Feb 2019 11:42:48 +0900 |
parents | c6250ad544e0 |
children | 9b0a7f8dde81 |
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.getNumber() > sendedProposal.getNumber()){ promiseCount = 0; sendedProposal.incrementNumber(); put("sendProposal", sendedProposal); cgm.setup(new SendPrepareRequestCodeGear()); }else{ if(receivePromise.isAccepted()){ if(!sendedProposal.isAccepted()){ sendedProposal.setValue(receivePromise.getValue()); } } } put("sendedProposal", sendedProposal); put("promiseCount", promiseCount); if(promiseCount > sendedProposal.getAcceptorNum()/2){ put("acceptProposal", sendedProposal); cgm.setup(new SendAcceptRequestCodeGear()); }else { cgm.setup(new ReceivePromiseCodeGear()); } } }