if (end > current) {
end = current;
}
for (; start < end; start += minute) {
Statistic state = m_serverStateManager.findOrCreateState(start);
Message temp = machine.findOrCreateMessage(start);
Map<String, AtomicLong> totals = state.getMessageTotals();
Map<String, AtomicLong> totalLosses = state.getMessageTotalLosses();
Map<String, AtomicLong> sizes = state.getMessageSizes();
for (Entry<String, AtomicLong> entry : totals.entrySet()) {
String domain = entry.getKey();
long value = entry.getValue().get();
ProcessDomain processDomain = machine.findOrCreateProcessDomain(domain);
Detail detail = processDomain.findOrCreateDetail(start);
processDomain.setTotal(value + processDomain.getTotal());
detail.setTotal(value + detail.getTotal());
}
for (Entry<String, AtomicLong> entry : totalLosses.entrySet()) {
String domain = entry.getKey();
long value = entry.getValue().get();
ProcessDomain processDomain = machine.findOrCreateProcessDomain(domain);
Detail detail = processDomain.findOrCreateDetail(start);
processDomain.setTotalLoss(value + processDomain.getTotalLoss());
detail.setTotalLoss(value + detail.getTotalLoss());
}
for (Entry<String, AtomicLong> entry : sizes.entrySet()) {
String domain = entry.getKey();
long value = entry.getValue().get();
ProcessDomain processDomain = machine.findOrCreateProcessDomain(domain);
Detail detail = processDomain.findOrCreateDetail(start);
processDomain.setSize(value + processDomain.getSize());
detail.setSize(value + detail.getSize());
}
long messageTotal = state.getMessageTotal();
long messageTotalLoss = state.getMessageTotalLoss();
long messageSize = state.getMessageSize();
long blockTotal = state.getBlockTotal();
long blockLoss = state.getBlockLoss();
long blockTime = state.getBlockTime();
long pigeonTimeError = state.getPigeonTimeError();
long networkTimeError = state.getNetworkTimeError();
long messageDump = state.getMessageDump();
long messageDumpLoss = state.getMessageDumpLoss();
int processDelayCount = state.getProcessDelayCount();
double processDelaySum = state.getProcessDelaySum();
temp.setTotal(messageTotal).setTotalLoss(messageTotalLoss).setSize(messageSize);
temp.setBlockTotal(blockTotal).setBlockLoss(blockLoss).setBlockTime(blockTime);
temp.setPigeonTimeError(pigeonTimeError).setNetworkTimeError(networkTimeError).setDump(messageDump);
temp.setDumpLoss(messageDumpLoss).setDelayCount(processDelayCount).setDelaySum(processDelaySum);
machine.setTotal(messageTotal + machine.getTotal()).setTotalLoss(messageTotalLoss + machine.getTotalLoss())
.setSize(messageSize + machine.getSize());
machine.setBlockTotal(machine.getBlockTotal() + blockTotal).setBlockLoss(machine.getBlockLoss() + blockLoss)
.setBlockTime(machine.getBlockTime() + blockTime);
machine.setPigeonTimeError(machine.getPigeonTimeError() + pigeonTimeError)
.setNetworkTimeError(machine.getNetworkTimeError() + networkTimeError)
.setDump(machine.getDump() + messageDump);
machine.setDumpLoss(machine.getDumpLoss() + messageDumpLoss)
.setDelayCount(machine.getDelayCount() + processDelayCount)
.setDelaySum(machine.getDelaySum() + processDelaySum);
double avg = 0;
long count = machine.getDelayCount();
if (count > 0) {
avg = machine.getDelaySum() / count;
machine.setDelayAvg(avg);
}
if (messageTotal > maxTps) {
maxTps = messageTotal;
}
temp.setTime(new Date(start));
size++;
}
double avgTps = 0;
if (size > 0) {