delay.java
来自「JGRoups源码」· Java 代码 · 共 97 行
JAVA
97 行
// $Id: DELAY.java,v 1.7 2005/08/08 12:45:42 belaban Exp $package org.jgroups.protocols;import org.jgroups.Event;import org.jgroups.stack.Protocol;import org.jgroups.util.Util;import java.util.Properties;/** * Delays incoming/outgoing messages by a random number of milliseconds (range between 0 and n * where n is determined by the user). Incoming messages can be delayed independently from * outgoing messages (or not delayed at all).<p> * This protocol should be inserted directly above the bottommost protocol (e.g. UDP). */public class DELAY extends Protocol { int in_delay=0, out_delay=0; /** * All protocol names have to be unique ! */ public String getName() { return "DELAY"; } public boolean setProperties(Properties props) { String str; super.setProperties(props); str=props.getProperty("in_delay"); if(str != null) { in_delay=Integer.parseInt(str); props.remove("in_delay"); } str=props.getProperty("out_delay"); if(str != null) { out_delay=Integer.parseInt(str); props.remove("out_delay"); } if(props.size() > 0) { log.error("DELAY.setProperties(): these properties are not recognized: " + props); return false; } return true; } public void up(Event evt) { int delay=in_delay > 0 ? computeDelay(in_delay) : 0; switch(evt.getType()) { case Event.MSG: // Only delay messages, not other events ! if(log.isInfoEnabled()) log.info("delaying incoming message for " + delay + " milliseconds"); Util.sleep(delay); break; } passUp(evt); // Pass up to the layer above us } public void down(Event evt) { int delay=out_delay > 0 ? computeDelay(out_delay) : 0; switch(evt.getType()) { case Event.MSG: // Only delay messages, not other events ! if(log.isInfoEnabled()) log.info("delaying outgoing message for " + delay + " milliseconds"); Util.sleep(delay); break; } passDown(evt); // Pass on to the layer below us } /** * Compute a random number between 0 and n */ static int computeDelay(int n) { return (int)((Math.random() * 1000000) % n); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?