blob: 554d64c7fb6af152a3d22b8ef051ea09bae834a6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.ptp.rm.mpi.mpich2.core.rtsystem;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
*
* @author Daniel Felix Ferber
*
*/
public class MPICH2HostMap {
public static class Host {
public final static int NO_ERRORS = 0;
public final static int ERR_NUM_SLOTS = 1 << 1;
public final static int ERR_MAX_NUM_SLOTS = 1 << 2;
public final static int ERR_UNKNOWN_ATTR = 1 << 3;
private String name = null;
private String addr = null;
private String port = null;
private int numProcessors = 0;
private int maxNumProcessors = 0;
private int errors = NO_ERRORS;
public Host(String hostname, String address, String port) {
this.name = hostname;
this.addr = address;
this.port = port;
}
public int getNumProcessors() {
return numProcessors;
}
public int getMaxNumProcessors() {
return maxNumProcessors;
}
public String getName() {
return name;
}
public String getAddress() {
return addr;
}
public String getPort() {
return port;
}
public int getErrors() {
return errors;
}
public void setNumProcessors(int numProcessors) {
this.numProcessors = numProcessors;
}
public void setMaxNumProcessors(int maxNumProcessors) {
this.maxNumProcessors = maxNumProcessors;
}
public void addErrors(int errors) {
this.errors |= errors;
}
}
List<Host> hosts = new ArrayList<Host>();
Map<String, Host> hostNameToHost = new HashMap<String, Host>();
public boolean hasErrors = false;
protected void addHost(Host host) {
hosts.add(host);
hostNameToHost.put(host.getName(), host);
}
public Host[] getHosts() {
return hosts.toArray(new Host[hosts.size()]);
}
public Iterator<Host> getHostIterator() {
return hosts.listIterator();
}
public Host getHostByName(String name) {
return hostNameToHost.get(name);
}
public void addHost(String name, String address, String port) {
MPICH2HostMap.Host host = new MPICH2HostMap.Host(name, address, port);
addHost(host);
}
public int count() {
return hosts.size();
}
public boolean hasParseErrors() {
return hasErrors;
}
}