package org.jgroups.protocols; import org.jgroups.Address; import org.jgroups.Event; import org.jgroups.Message; import org.jgroups.View; /** * Extends the ACK_SEQUENCER to support uniformity properties * * @author Pedro Ruivo * @since 3.2 */ //TODO: add test cases! public class UNIFORM extends ACK_SEQUENCER { @Override protected Object handleMessage(Address originalSender, long seqNo, Message message) { sendAck(originalSender, seqNo, null); awaitUntilReadyToDeliver(originalSender, seqNo); return up_prot.up(new Event(Event.MSG, message)); } @Override protected void handleViewChange(View view) { synchronized (origMbrAckMap) { updateState(view); //TODO this will originate a memory leak when a member leaves the view... for (Address address : view.getMembers()) { if (!origMbrAckMap.containsKey(address)) { origMbrAckMap.put(address, new MessageWindow()); } } logViewChange(); } } }