package at.ac.ait.archistar.engine.distributor;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import at.ac.ait.archistar.backendserver.storageinterface.StorageServer;
/**
* This contains the full server configuration.
*
* Later verions should be able to handle server reconfiguraiton (ie. dynamic
* server management)
*
* @author andy
*/
public class ServerConfiguration {
protected HashMap<String, StorageServer> serverMapId = new HashMap<>();
public ServerConfiguration(Set<StorageServer> servers) {
for (StorageServer s : servers) {
this.serverMapId.put(s.getId(), s);
}
}
/**
* this is needed for the BFT network
*
* @return a Map <bft-id, server-port>
*/
public Map<Integer, Integer> getBFTServerNetworkPortMap() {
HashMap<Integer, Integer> serverList = new HashMap<>();
int i = 0;
for (StorageServer s : this.serverMapId.values()) {
serverList.put(s.getBFTId(), 20000 + i++);
}
return serverList;
}
public StorageServer getStorageServer(String serverid) {
return this.serverMapId.get(serverid);
}
public Collection<StorageServer> getOnlineStorageServers() {
return this.serverMapId.values();
}
public int getOnlineStorageServerCount() {
return this.getOnlineStorageServers().size();
}
}