+ @Override
+ public void updatePeerIds(ServerConfigurationPayload serverConfig){
+ votingMember = true;
+ boolean foundSelf = false;
+ Set<String> currentPeers = new HashSet<>(this.getPeerIds());
+ for(ServerInfo server: serverConfig.getServerConfig()) {
+ if(getId().equals(server.getId())) {
+ foundSelf = true;
+ if(!server.isVoting()) {
+ votingMember = false;
+ }
+ } else {
+ VotingState votingState = server.isVoting() ? VotingState.VOTING: VotingState.NON_VOTING;
+ if(!currentPeers.contains(server.getId())) {
+ this.addToPeers(server.getId(), null, votingState);
+ } else {
+ this.getPeerInfo(server.getId()).setVotingState(votingState);
+ currentPeers.remove(server.getId());
+ }
+ }
+ }
+
+ for(String peerIdToRemove: currentPeers) {
+ this.removePeer(peerIdToRemove);
+ }
+
+ if(!foundSelf) {
+ votingMember = false;
+ }
+
+ setDynamicServerConfigurationInUse();
+ }
+