package resa.optimize; import java.util.Objects; /** * Created by Tom.fu on 16/4/2014. */ public class AggResult implements Cloneable { protected long duration = 0; protected QueueAggResult sendQueueResult = new QueueAggResult(); protected QueueAggResult recvQueueResult = new QueueAggResult(); public static <T extends AggResult> T getCombinedResult(T dest, Iterable<AggResult> his) { his.forEach(dest::add); return dest; } public void add(AggResult r) { Objects.requireNonNull(r, "input AggResult cannot null"); this.duration += r.duration; this.sendQueueResult.add(r.sendQueueResult); this.recvQueueResult.add(r.recvQueueResult); } public void setDuration(long duration) { this.duration = duration; } public void addDuration(long duration) { this.duration += duration; } public long getDuration(){ return this.duration; } public double getArrivalRatePerSec() { return recvQueueResult.getArrivalCount() * 1000.0 / (double) duration; } public double getDepartureRatePerSec(){ return sendQueueResult.getArrivalCount() * 1000.0 / (double) duration; } public QueueAggResult getSendQueueResult() { return sendQueueResult; } public QueueAggResult getRecvQueueResult() { return recvQueueResult; } }