package lsr.paxos.recovery; import java.util.ArrayList; import java.util.BitSet; import java.util.HashMap; import java.util.List; import java.util.Map; import lsr.common.ProcessDescriptor; import lsr.paxos.messages.Message; import lsr.paxos.network.Network; public class MockNetwork extends Network { private Map<Integer, Message> messages; private List<Message> messagesSentToAll; public MockNetwork() { messages = new HashMap<Integer, Message>(); messagesSentToAll = new ArrayList<Message>(); } public void sendMessage(Message message, int destination) { BitSet destinations = new BitSet(); destinations.set(destination); sendMessage(message, destinations); } public void sendMessage(Message message, BitSet destination) { for (int i = destination.nextSetBit(0); i >= 0; i = destination.nextSetBit(i + 1)) { messages.put(i, message); } fireSentMessage(message, destination); } public void sendToAll(Message message) { BitSet destinations = new BitSet(); destinations.set(0, ProcessDescriptor.getInstance().numReplicas); sendMessage(message, destinations); messagesSentToAll.add(message); } public Map<Integer, Message> getSentMessages() { return messages; } public List<Message> getMessagesSentToAll() { return messagesSentToAll; } public boolean fireReceive(Message message, int sender) { fireReceiveMessage(message, sender); return true; } public void start() { } }