/** Checks if a message should be passed up, or not */ protected boolean shouldDropUpMessage( @SuppressWarnings("UnusedParameters") Message msg, Address sender) { if (discard_all && !sender.equals(localAddress())) return true; if (ignoredMembers.contains(sender)) { if (log.isTraceEnabled()) log.trace(localAddress + ": dropping message from " + sender); num_up++; return true; } if (up > 0) { double r = Math.random(); if (r < up) { if (excludeItself && sender.equals(localAddress())) { if (log.isTraceEnabled()) log.trace("excluding myself"); } else { if (log.isTraceEnabled()) log.trace(localAddress + ": dropping message from " + sender); num_up++; return true; } } } return false; }
public Object down(Message msg) { Address dest = msg.getDest(); boolean multicast = dest == null; if (msg.getSrc() == null) msg.setSrc(localAddress()); if (discard_all) { if (dest == null || dest.equals(localAddress())) loopback(msg); return null; } if (!multicast && drop_down_unicasts > 0) { drop_down_unicasts = Math.max(0, drop_down_unicasts - 1); return null; } if (multicast && drop_down_multicasts > 0) { drop_down_multicasts = Math.max(0, drop_down_multicasts - 1); return null; } if (down > 0) { double r = Math.random(); if (r < down) { if (excludeItself && dest != null && dest.equals(localAddress())) { if (log.isTraceEnabled()) log.trace("excluding itself"); } else { log.trace("dropping message"); num_down++; return null; } } } return down_prot.down(msg); }