import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class NameServiceImpl extends UnicastRemoteObject
implements NameService {
final int maxSize = 100;
private String[] names = new String[maxSize];
private String[] hosts = new String[maxSize];
private int[] ports = new int[maxSize];
private int dirsize = 0;
public NameServiceImpl() throws RemoteException {
}
public int search(String s) throws RemoteException {
for (int i = 0; i < dirsize; i++)
if (names[i].equals(s)) return i;
return -1;
}
public int insert(String s, String hostName, int portNumber)
throws RemoteException {
int oldIndex = search(s); // is it already there
if ((oldIndex == -1) && (dirsize < maxSize)) {
names[dirsize] = s;
hosts[dirsize] = hostName;
ports[dirsize] = portNumber;
dirsize++;
return 1;
} else
return 0;
}
public int getPort(int index) throws RemoteException {
return ports[index];
}
public String getHostName(int index) throws RemoteException {
return hosts[index];
}
public static void main(String args[]) {
// create security manager
System.setSecurityManager(new RMISecurityManager());
try {
NameServiceImpl obj = new NameServiceImpl();
Naming.rebind("MyNameServer", obj);
System.out.println("MyNameServer bound in registry");
} catch (Exception e) {
System.out.println("NameServiceImpl err: " + e.getMessage());
}
}
}