blob: 6986156a2023dfd9086bf39e44618623812be6b9 [file] [log] [blame]
package com.google.code.gossip.manager.random;
import java.util.ArrayList;
import java.util.Random;
import com.google.code.gossip.GossipService;
import com.google.code.gossip.LocalGossipMember;
import com.google.code.gossip.manager.GossipManager;
import com.google.code.gossip.manager.impl.SendMembersActiveGossipThread;
public class RandomActiveGossipThread extends SendMembersActiveGossipThread {
/** The Random used for choosing a member to gossip with. */
private Random _random;
public RandomActiveGossipThread(GossipManager gossipManager) {
super(gossipManager);
// Initialize the random used for deciding on which gossip member to gossip with.
_random = new Random();
}
/**
* [The selectToSend() function.]
* Find a random peer from the local membership list.
* In the case where this client is the only member in the list, this method will return null.
* @return Member random member if list is greater than 1, null otherwise
*/
protected LocalGossipMember selectPartner(ArrayList<LocalGossipMember> memberList) {
LocalGossipMember member = null;
// We can only send a message if there are actually other members.
if (memberList.size() > 0) {
// Get the index of the random member.
int randomNeighborIndex = _random.nextInt(memberList.size());
member = memberList.get(randomNeighborIndex);
} else {
GossipService.debug("I am alone in this world.");
}
return member;
}
}