📄 locatorimpl.java
字号:
/* * @<#>Locator.java version 0.1, 7/1/2001 * * THIS PROGRAM IS FREE SOFTWARE; YOU CAN DISTRIBUTE IT AND/OR * MODIFY IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE * AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. * * THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE * GNU GENERAL PUBLIC LICENSE FOR MORE DETAILS. * * Copyright (c) 2000 Wayne State University. All Rights Reserved. */package naplet.tracing;import java.rmi.Remote;import java.rmi.RemoteException;import naplet.*;import naplet.server.*;import naplet.directory.*;import java.io.*;import java.net.*;import java.util.*;public class LocatorImpl implements Locator { static private int DefaultDelay = 100; static private int DefaultTimeOut = 5000; private static LocatorImpl instance = null; private ServerProperty property; protected LocatorImpl(ServerProperty property) { this.property = property; } public static LocatorImpl getInstance(ServerProperty property) { if (instance==null) instance = new LocatorImpl(property); return instance; } public void update( NapletID id, URN server ) {}; public URN lookup( NapletID nid ) throws NapletLocateException { return lookup( nid, DefaultTimeOut ); } /** * Look up naplet server * * @param nid Naplet id * @param timeout Time limit to locate a naplet */ public URN lookup( NapletID nid, long timeout ) throws NapletLocateException { int delay = DefaultDelay; URN server = null; NapletDirectory directory = property.getNapletDirectory(); boolean stop = false; long begin = System.currentTimeMillis(); if (directory==null) { throw new NapletLocateException( "Cann't locate the naplet without naplet Directory"); } else { while ( !stop ) { System.out.println("Try to locate Naplet server"); try { server = directory.lookup( nid ); stop = true; } catch (DirectoryAccessException dae) { long end = System.currentTimeMillis(); if (end-begin<timeout) { try { Thread.sleep(delay<<1); } catch (InterruptedException ie) { stop = true; } } else { stop = true; } } catch (java.rmi.RemoteException re) { throw new NapletLocateException( "Cann't locate the naplet"); } } } return server; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -