Mercurial > hg > Database > Christie
view src/main/java/christie/test/topology/paxos/learner/AggregateProposalCodeGear.java @ 185:98d9473c5a83
update add return
author | akahori |
---|---|
date | Tue, 05 Feb 2019 18:05:45 +0900 |
parents | 1bffd8151c6a |
children | 149d7fb0cfa6 |
line wrap: on
line source
package christie.test.topology.paxos.learner; import christie.annotation.Peek; import christie.annotation.Take; import christie.codegear.CodeGear; import christie.codegear.CodeGearManager; import christie.test.topology.paxos.Proposal; import christie.topology.Message; import christie.topology.node.TopologyNodeConfig; import java.util.HashMap; public class AggregateProposalCodeGear extends CodeGear { @Peek TopologyNodeConfig topologyNodeConfig; @Take HashMap<String, Proposal> acceptedMap; @Override protected void run(CodeGearManager cgm) { HashMap<Integer, Integer> proposalValueMap = new HashMap<>(); for(Proposal proposal: acceptedMap.values()){ int value = proposal.getValue(); if(proposalValueMap.containsKey(value)){ int count = proposalValueMap.get(value).intValue(); count++; if(count > proposal.getAcceptorNum()/2) { System.out.println("finish " + proposal); getDGM(topologyNodeConfig.getManagerKey()).put("FINISHMESSAGE", new Message()); return; } proposalValueMap.replace(value, count); }else{ proposalValueMap.put(value, 1); } } put("acceptedMap", acceptedMap); cgm.setup(new RecieveAcceptProposalCodeGear()); } }