import java.net.*;
import java.io.*;
import java.util.*;
public class NameServer {
NameTable table;
public NameServer() {
table = new NameTable();
}
void handleclient(Socket theClient) {
try {
BufferedReader din = new BufferedReader
(new InputStreamReader(theClient.getInputStream()));
PrintWriter pout = new PrintWriter(theClient.getOutputStream());
String getline = din.readLine();
StringTokenizer st = new StringTokenizer(getline);
String tag = st.nextToken();
if (tag.equals("search")) {
int index = table.search(st.nextToken());
if (index == -1) // not found
pout.println(-1 + " " + "nullhost");
else
pout.println(table.getPort(index) + " "
+ table.getHostName(index));
} else if (tag.equals("insert")) {
String name = st.nextToken();
String hostName = st.nextToken();
int port = Integer.parseInt(st.nextToken());
int retValue = table.insert(name, hostName, port);
pout.println(retValue);
}
pout.flush();
} catch (IOException e) {
System.err.println(e);
}
}
public static void main(String[] args) {
NameServer ns = new NameServer();
System.out.println("NameServer started:");
try {
ServerSocket listener = new ServerSocket(Symbols.ServerPort);
while (true) {
Socket aClient = listener.accept();
ns.handleclient(aClient);
aClient.close();
}
} catch (IOException e) {
System.err.println("Server aborted:" + e);
}
}
}