package se.sics.gvod.ls.interas.snapshot; import java.util.ArrayList; import java.util.List; import se.sics.gvod.net.VodAddress; import se.sics.gvod.net.VodAddress.NatType; public class Stats { private final int nodeId, overlayId; private volatile int selectedTimes = 0; private volatile VodAddress.NatType natType; private volatile int shuffleTimeout, numReceivedRequests, numSentRequests, numReceivedResponses, numSentResponses; private volatile double avgAsHops; private List<VodAddress> neighbours = new ArrayList<VodAddress>(); //------------------------------------------------------------------- public Stats(int nodeId, int overlayId) { this.nodeId = nodeId; this.overlayId = overlayId; } public int getNodeId() { return nodeId; } public int getOverlayId() { return overlayId; } public void setNatType(NatType peerType) { this.natType = peerType; } public void updatePartners(List<VodAddress> n) { this.neighbours.clear(); this.neighbours.addAll(n); } //------------------------------------------------------------------- public List<VodAddress> getAllPartners() { List<VodAddress> allPartners = new ArrayList<VodAddress>(); allPartners.addAll(neighbours); return allPartners; } //------------------------------------------------------------------- public List<VodAddress> getPartners() { return this.neighbours; } //------------------------------------------------------------------- public void incSelectedTimes() { this.selectedTimes++; } //------------------------------------------------------------------- public int getSelectedTimes() { return this.selectedTimes; } public void incReceivedResponses() { this.numReceivedResponses++; } public void resetReceivedResponses() { this.numReceivedResponses = 0; } public int getReceivedResponses() { return this.numReceivedResponses; } public void incReceivedRequests() { this.numReceivedRequests++; } public void resetReceivedRequests() { this.numReceivedRequests = 0; } public int getReceivedRequests() { return this.numReceivedRequests; } public void incSentResponses() { numSentResponses++; } public void resetSentResponses() { numSentResponses = 0; } public int getSentResponses() { return numSentResponses; } public void incShuffleTimeout() { this.shuffleTimeout++; } public void resetShuffleTimeout() { this.shuffleTimeout = 0; } public int getShuffleTimeout() { return this.shuffleTimeout; } public int getSentRequests() { return numSentRequests; } public void incSentRequests() { this.numSentRequests++; } public void resetSentRequests() { this.numSentRequests = 0; } public void setAvgAsHops(double avgAsHops) { this.avgAsHops = avgAsHops; } public void resetAvgAsHops() { this.avgAsHops = 0; } public double getAvgAsHops() { return avgAsHops; } public VodAddress.NatType getNatType() { return this.natType; } //------------------------------------------------------------------- public boolean isPartner(VodAddress peer) { for (VodAddress desc : getAllPartners()) { if (desc.equals(peer)) { return true; } } return false; } @Override public String toString() { return "Peer : nat(" + this.natType + ")"; } }