loopback.java
来自「JGRoups源码」· Java 代码 · 共 106 行
JAVA
106 行
// $Id: LOOPBACK.java,v 1.16 2005/08/26 12:26:33 belaban Exp $package org.jgroups.protocols;import org.jgroups.Address;import org.jgroups.Event;import org.jgroups.Message;import org.jgroups.stack.IpAddress;import org.jgroups.stack.Protocol;import org.jgroups.util.Util;/** Makes copies of outgoing messages, swaps sender and receiver and sends the message back up the stack. */public class LOOPBACK extends Protocol { private Address local_addr=null; private String group_addr=null; public LOOPBACK() { } public String toString() { return "Protocol LOOPBACK(local address: " + local_addr + ')'; } /*------------------------------ Protocol interface ------------------------------ */ public String getName() { return "LOOPBACK"; } public void init() throws Exception {// local_addr=new IpAddress("localhost", 10000) { // fake address// public String toString() {// return "<fake>";// }// }; //local_addr=new org.jgroups.stack.IpAddress("localhost", 10000); // fake address local_addr = new IpAddress(12345); } public void start() throws Exception { passUp(new Event(Event.SET_LOCAL_ADDRESS, local_addr)); } /** * Caller by the layer above this layer. Usually we just put this Message * into the send queue and let one or more worker threads handle it. A worker thread * then removes the Message from the send queue, performs a conversion and adds the * modified Message to the send queue of the layer below it, by calling Down). */ public void down(Event evt) { if(trace) log.trace("event is " + evt + ", group_addr=" + group_addr + ", time is " + System.currentTimeMillis() + ", hdrs: " + Util.printEvent(evt)); switch(evt.getType()) { case Event.MSG: Message msg=(Message)evt.getArg(); Message rsp=msg.copy(); if(rsp.getSrc() == null) rsp.setSrc(local_addr); //dest_addr=msg.getDest(); //rsp.setDest(local_addr); //rsp.setSrc(dest_addr != null ? dest_addr : local_addr); up(new Event(Event.MSG, rsp)); break; case Event.GET_LOCAL_ADDRESS: // return local address -> Event(SET_LOCAL_ADDRESS, local) passUp(new Event(Event.SET_LOCAL_ADDRESS, local_addr)); break; case Event.CONNECT: group_addr=(String)evt.getArg(); passUp(new Event(Event.CONNECT_OK)); break; case Event.DISCONNECT: passUp(new Event(Event.DISCONNECT_OK)); break; case Event.PERF: passUp(evt); break; } } /*--------------------------- End of Protocol interface -------------------------- */}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?