package com.hubspot.mesos;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Resources {
public static Resources add(Resources a, Resources b) {
checkNotNull(a, "first argument of Resources.add() is null");
checkNotNull(b, "second argument of Resources.add() is null");
return new Resources(a.getCpus() + b.getCpus(), a.getMemoryMb() + b.getMemoryMb(), a.getNumPorts() + b.getNumPorts(), a.getDiskMb() + b.getDiskMb());
}
public static final Resources EMPTY_RESOURCES = new Resources(0, 0, 0, 0);
private final double cpus;
private final double memoryMb;
private final int numPorts;
private final double diskMb;
public Resources(double cpus, double memoryMb, int numPorts) {
this(cpus, memoryMb, numPorts, 0);
}
@JsonCreator
public Resources(@JsonProperty("cpus") double cpus, @JsonProperty("memoryMb") double memoryMb, @JsonProperty("numPorts") int numPorts, @JsonProperty("diskMb") double diskMb) {
this.cpus = cpus;
this.memoryMb = memoryMb;
this.numPorts = numPorts;
this.diskMb = diskMb;
}
public int getNumPorts() {
return numPorts;
}
public double getCpus() {
return cpus;
}
public double getMemoryMb() {
return memoryMb;
}
public double getDiskMb() {
return diskMb;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Resources resources = (Resources) o;
return Double.compare(resources.cpus, cpus) == 0 &&
Double.compare(resources.memoryMb, memoryMb) == 0 &&
numPorts == resources.numPorts &&
Double.compare(resources.diskMb, diskMb) == 0;
}
@Override
public int hashCode() {
return Objects.hash(cpus, memoryMb, numPorts, diskMb);
}
@Override
public String toString() {
return "Resources{" +
"cpus=" + cpus +
", memoryMb=" + memoryMb +
", numPorts=" + numPorts +
", diskMb=" + diskMb +
'}';
}
}