/** Generates an instance based on the specified file. */ public static RemoteControlPipeTable readHostFile(String filename) throws IOException { RemoteControlPipeTable table = new RemoteControlPipeTable(); BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(new FileInputStream(filename), Main.ENCODING)); } catch (UnsupportedEncodingException e) { // NOTREACHED } String line; while (true) { line = in.readLine(); if (line == null) break; // EOF if (line.length() <= 0) continue; // skip brank lines if (line.startsWith("#") || line.startsWith(";") || line.startsWith("//")) continue; // comments String[] splitted = line.split("\\s+"); HostAndPort hostPort = MessagingUtility.parseHostnameAndPort(splitted[0], Main.DIST_EMU_PORT); int startHostID = Integer.parseInt(splitted[1]); WorkerEntry entry = new WorkerEntry(hostPort, startHostID); table.entrySet.add(entry); table.entryMap.put(hostPort.getHostAddress(), entry); } return table; }
protected InetAddress getWorkerHostAddress(int hostID) { InetAddress ret = null; HostAndPort hostPort = this.getWorkerHostAndPort(hostID); if (hostPort != null) { try { ret = hostPort.getHostAddress(); } catch (UnknownHostException e) { System.err.println("Could not resolve a hostname: " + hostPort.getHostName()); } } else { ret = null; } return ret; }
/** Generates an instance based on the specified String. */ public static RemoteControlPipeTable parseString(String str) throws UnknownHostException { RemoteControlPipeTable table = new RemoteControlPipeTable(); String[] splitted = str.split("\\s*,\\s*"); try { int index = 0; while (true) { HostAndPort hostPort = MessagingUtility.parseHostnameAndPort(splitted[index], Main.DIST_EMU_PORT); int startHostID = Integer.parseInt(splitted[index + 1]); WorkerEntry entry = new WorkerEntry(hostPort, startHostID); table.entrySet.add(entry); table.entryMap.put(hostPort.getHostAddress(), entry); index += 2; } } catch (ArrayIndexOutOfBoundsException e) { // ignore } return table; }