utilities.java
来自「JGRoups源码」· Java 代码 · 共 136 行
JAVA
136 行
// $Id: Utilities.java,v 1.10 2006/10/11 14:33:53 belaban Exp $package org.jgroups.tests.stack;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.jgroups.stack.GossipClient;import org.jgroups.stack.GossipRouter;import org.jgroups.stack.IpAddress;import java.net.ServerSocket;/** * Utility functions shared by stack tests. * * @author Ovidiu Feodorov <ovidiuf@users.sourceforge.net> * @version $Revision: 1.10 $ * @since 2.2.1 */public class Utilities { static Log log=LogFactory.getLog(Utilities.class); private static GossipRouter gossipRouter=null; public static int startGossipRouter() throws Exception { return startGossipRouter(GossipRouter.EXPIRY_TIME, "localhost", GossipRouter.GOSSIP_REQUEST_TIMEOUT, GossipRouter.ROUTING_CLIENT_REPLY_TIMEOUT); } public static int startGossipRouter(String bind_addr) throws Exception { return startGossipRouter(GossipRouter.EXPIRY_TIME, bind_addr, GossipRouter.GOSSIP_REQUEST_TIMEOUT, GossipRouter.ROUTING_CLIENT_REPLY_TIMEOUT); } public static int startGossipRouter(long expiryTime) throws Exception { return startGossipRouter(expiryTime, "localhost", GossipRouter.GOSSIP_REQUEST_TIMEOUT, GossipRouter.ROUTING_CLIENT_REPLY_TIMEOUT); } public static int startGossipRouter(long expiryTime, String bind_addr) throws Exception { return startGossipRouter(expiryTime, bind_addr, GossipRouter.GOSSIP_REQUEST_TIMEOUT, GossipRouter.ROUTING_CLIENT_REPLY_TIMEOUT); } /** * Starts the router on a separate thread and makes sure it answers a dummy * GossipRouter.GET request. * * @return the port GossipRouter is listening on. */ public static int startGossipRouter(final long expiryTime, final String bind_addr, final long gossipRequestTimeout, final long routingClientReplyTimeout) throws Exception { if(gossipRouter != null) throw new Exception("GossipRouter already started"); final int routerPort=getFreePort(); try { gossipRouter=new GossipRouter(routerPort, bind_addr, expiryTime, gossipRequestTimeout, routingClientReplyTimeout); gossipRouter.start(); } catch(Exception e) { log.error("Failed to start the router on port " + routerPort); gossipRouter=null; throw e; } GossipClient client=null; // verify the router - try for 10 secs to connect long startms=System.currentTimeMillis(); Exception lastConnectException=null; long crtms=startms; while(crtms - startms < 10000) { try { client=new GossipClient(new IpAddress(bind_addr, routerPort), 10000); client.getMembers("Utilities:startGossipRouterConnectionTest"); lastConnectException=null; break; } catch(Exception e) { if(client != null) client.stop(); lastConnectException=e; Thread.sleep(1000); crtms=System.currentTimeMillis(); } } if(lastConnectException != null) { lastConnectException.printStackTrace(); throw new Exception("Cannot connect to the router"); } return routerPort; } public static void stopGossipRouter() throws Exception { if(gossipRouter == null) { throw new Exception("There's no GossipRouter running"); } gossipRouter.stop(); System.out.println("router stopped"); gossipRouter=null; } /** * Returns a port we can bind to. */ public static int getFreePort() throws Exception { ServerSocket ss=new ServerSocket(0); int port=ss.getLocalPort(); ss.close(); return port; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?