public DiskState getDiskState(int disk) throws IndexOutOfBoundsException { if (diskStates.isEmpty()) { // Zero disks, means unknown amount of disks, but all are up, return new DiskState(); // in which case we don't need to know amount of disks. } return diskStates.get(disk); }
public NodeState clone() { try{ NodeState ns = (NodeState) super.clone(); ns.diskStates = new ArrayList<>(); for (DiskState s : diskStates) { ns.diskStates.add(s.clone()); } return ns; } catch (CloneNotSupportedException e) { throw new RuntimeException("Does not happen"); } }
private void updateAnyDiskDownFlag() { boolean anyDown = false; for (DiskState ds : diskStates) { if (!ds.getState().equals(State.UP)) { anyDown = true; break; } } anyDiskDown = anyDown; }
public DiskState(State s, String description, double capacity) { setState(s); // Set via set methods, so we can have illegal argument checks only one place setCapacity(capacity); setDescription(description); } public DiskState clone() {
boolean anyNonDefault = false; for (DiskState diskState : diskStates) { anyNonDefault |= (!diskState.equals(new DiskState(State.UP))); DiskState defaultDiskState = new DiskState(State.UP); for (int i=0; i<diskStates.size(); ++i) { if (!diskStates.get(i).equals(defaultDiskState)) { sb.append(" d").append(i).append("(").append(diskStates.get(i).serialize("", false)).append(")"); sb.append(", disk states:"); for (int i=0; i<diskStates.size(); ++i) { sb.append(" disk ").append(i).append(": ").append(diskStates.get(i).toString());
NodeState nonEmptyState = (diskStates.size() == 0 ? ns : this); for (int i=0; i<nonEmptyState.diskStates.size(); ++i) { if (!nonEmptyState.diskStates.get(i).equals(new DiskState(State.UP))) { return false; } else { for (int i=0; i<diskStates.size(); ++i) { if (!diskStates.get(i).equals(ns.diskStates.get(i))) { return false;
case 's': if (key.length() > 1) break; setState(State.get(value)); continue; case 'c': if (key.length() > 1) break; try{ setCapacity(Double.valueOf(value)); } catch (Exception e) { throw new ParseException("Illegal disk capacity '" + value + "'. Capacity must be a positive floating point number", 0);
public DiskState(State s) { setState(s); } public DiskState(State s, String description, double capacity) {
for(int i = 0; i < diskStates.size(); ++i) { String diskPrefix = prefix + "d." + i + "."; String disk = diskStates.get(i).serialize(diskPrefix, verbose); if (disk.length() > 0) { diskInfo.append(' ').append(disk);
double score = randomizer.nextDouble(); DiskState diskState = (nodeState.getDiskState(i)); if (diskState.getCapacity() != 1.0) { score = Math.pow(score, 1.0 / diskState.getCapacity());
Diff diskDiff = new Diff(); for (int i=0; i<diskStates.size(); ++i) { if (!diskStates.get(i).equals(other.diskStates.get(i))) { diskDiff.add(new Diff.Entry(i, diskStates.get(i), other.diskStates.get(i)));
NodeState nonEmptyState = (diskStates.size() == 0 ? other : this); for (int i=0; i<nonEmptyState.diskStates.size(); ++i) { if (!nonEmptyState.diskStates.get(i).equals(new DiskState(State.UP))) { return false; } else { for (int i=0; i<diskStates.size(); ++i) { if (!diskStates.get(i).equals(other.diskStates.get(i))) { return false;
if (nodeState.getDiskState(idealDiskIndex).getState() != State.UP) { continue;
public NodeState setDiskCount(int count) { if (count < 0) { throw new IllegalArgumentException("Count must be positive. Was "+count+"."); } diskStates.clear(); for(int i=0;i<count;i++) { diskStates.add(new DiskState(State.UP, "", 1.0)); } return this; }
newState.diskStates.add(new DiskState());