} else { final NetworkStatistic lastObservedNetworkStatistic = this.networkStatisticMap.get(interfaceName); final long timeDifference = currentNetworkStatistic.getTimestamp() - lastObservedNetworkStatistic.getTimestamp(); if (timeDifference <= 0) { throw new IllegalStateException("Timestamp of new observation should be strictly larger than the previous one."); final long txBytesDifference = currentNetworkStatistic.getTxBytes() - lastObservedNetworkStatistic.getTxBytes(); final long txCarrierDifference = currentNetworkStatistic.getTxCarrier() - lastObservedNetworkStatistic.getTxCarrier(); final long txCollisionsDifference = currentNetworkStatistic.getTxCollisions() - lastObservedNetworkStatistic.getTxCollisions(); final long txDroppedDifference = currentNetworkStatistic.getTxDropped() - lastObservedNetworkStatistic.getTxDropped(); final long txErrorsDifference = currentNetworkStatistic.getTxErrors() - lastObservedNetworkStatistic.getTxErrors(); final long txOverrunsDifference = currentNetworkStatistic.getTxOverruns() - lastObservedNetworkStatistic.getTxOverruns(); final long txPacketsDifference = currentNetworkStatistic.getTxPackets() - lastObservedNetworkStatistic.getTxPackets(); final long rxBytesDifference = currentNetworkStatistic.getRxBytes() - lastObservedNetworkStatistic.getRxBytes(); final long rxDroppedDifference = currentNetworkStatistic.getRxDropped() - lastObservedNetworkStatistic.getRxDropped(); final long rxErrorsDifference = currentNetworkStatistic.getRxErrors() - lastObservedNetworkStatistic.getRxErrors(); final long rxFrameDifference = currentNetworkStatistic.getRxFrame() - lastObservedNetworkStatistic.getRxFrame(); final long rxOverrunsDifference = currentNetworkStatistic.getRxOverruns() - lastObservedNetworkStatistic.getRxOverruns(); final long rxPacketsDifference = currentNetworkStatistic.getRxPackets() - lastObservedNetworkStatistic.getRxPackets(); final double rxPacketsPerSecond = rxPacketsDifference / (double) TimeUnit.SECONDS.convert(timeDifference, timeUnit); final NetworkUtilizationRecord r = new NetworkUtilizationRecord(currentNetworkStatistic.getTimestamp(), monitoringController.getHostname(), interfaceName, currentNetworkStatistic.getSpeed(), txBytesPerSecond, txCarrierPerSecond, txCollisionsPerSecond, txDroppedPerSecond, txErrorsPerSecond, txOverrunsPerSecond, txPacketsPerSecond, rxBytesPerSecond, rxDroppedPerSecond, rxErrorsPerSecond, rxFramePerSecond, rxOverrunsPerSecond, rxPacketsPerSecond);
} else { final NetworkStatistic lastObservedNetworkStatistic = this.networkStatisticMap.get(interfaceName); final long timeDifference = currentNetworkStatistic.getTimestamp() - lastObservedNetworkStatistic.getTimestamp(); if (timeDifference <= 0) { throw new IllegalStateException("Timestamp of new observation should be strictly larger than the previous one."); final long txBytesDifference = currentNetworkStatistic.getTxBytes() - lastObservedNetworkStatistic.getTxBytes(); final long txCarrierDifference = currentNetworkStatistic.getTxCarrier() - lastObservedNetworkStatistic.getTxCarrier(); final long txCollisionsDifference = currentNetworkStatistic.getTxCollisions() - lastObservedNetworkStatistic.getTxCollisions(); final long txDroppedDifference = currentNetworkStatistic.getTxDropped() - lastObservedNetworkStatistic.getTxDropped(); final long txErrorsDifference = currentNetworkStatistic.getTxErrors() - lastObservedNetworkStatistic.getTxErrors(); final long txOverrunsDifference = currentNetworkStatistic.getTxOverruns() - lastObservedNetworkStatistic.getTxOverruns(); final long txPacketsDifference = currentNetworkStatistic.getTxPackets() - lastObservedNetworkStatistic.getTxPackets(); final long rxBytesDifference = currentNetworkStatistic.getRxBytes() - lastObservedNetworkStatistic.getRxBytes(); final long rxDroppedDifference = currentNetworkStatistic.getRxDropped() - lastObservedNetworkStatistic.getRxDropped(); final long rxErrorsDifference = currentNetworkStatistic.getRxErrors() - lastObservedNetworkStatistic.getRxErrors(); final long rxFrameDifference = currentNetworkStatistic.getRxFrame() - lastObservedNetworkStatistic.getRxFrame(); final long rxOverrunsDifference = currentNetworkStatistic.getRxOverruns() - lastObservedNetworkStatistic.getRxOverruns(); final long rxPacketsDifference = currentNetworkStatistic.getRxPackets() - lastObservedNetworkStatistic.getRxPackets(); final double rxPacketsPerSecond = rxPacketsDifference / (double) TimeUnit.SECONDS.convert(timeDifference, timeUnit); final NetworkUtilizationRecord r = new NetworkUtilizationRecord(currentNetworkStatistic.getTimestamp(), monitoringController.getHostname(), interfaceName, currentNetworkStatistic.getSpeed(), txBytesPerSecond, txCarrierPerSecond, txCollisionsPerSecond, txDroppedPerSecond, txErrorsPerSecond, txOverrunsPerSecond, txPacketsPerSecond, rxBytesPerSecond, rxDroppedPerSecond, rxErrorsPerSecond, rxFramePerSecond, rxOverrunsPerSecond, rxPacketsPerSecond);
private NetworkStatistic getCurrentNetworkStatistic(final ITimeSource timesource, final String interfaceName) throws SigarException { final long currentTimestamp = timesource.getTime(); final NetInterfaceStat interfaceStat = this.sigar.getNetInterfaceStat(interfaceName); final long speed = interfaceStat.getSpeed(); final long txBytes = interfaceStat.getTxBytes(); final long txCarrier = interfaceStat.getTxCarrier(); final long txCollisions = interfaceStat.getTxCollisions(); final long txDropped = interfaceStat.getTxDropped(); final long txErrors = interfaceStat.getTxErrors(); final long txOverruns = interfaceStat.getTxOverruns(); final long txPackets = interfaceStat.getTxPackets(); final long rxBytes = interfaceStat.getRxBytes(); final long rxDropped = interfaceStat.getRxDropped(); final long rxErrors = interfaceStat.getRxErrors(); final long rxFrame = interfaceStat.getRxFrame(); final long rxOverruns = interfaceStat.getRxOverruns(); final long rxPackets = interfaceStat.getRxPackets(); return new NetworkStatistic(currentTimestamp, speed, txBytes, txCarrier, txCollisions, txDropped, txErrors, txOverruns, txPackets, rxBytes, rxDropped, rxErrors, rxFrame, rxOverruns, rxPackets); }
private NetworkStatistic getCurrentNetworkStatistic(final ITimeSource timesource, final String interfaceName) throws SigarException { final long currentTimestamp = timesource.getTime(); final NetInterfaceStat interfaceStat = this.sigar.getNetInterfaceStat(interfaceName); final long speed = interfaceStat.getSpeed(); final long txBytes = interfaceStat.getTxBytes(); final long txCarrier = interfaceStat.getTxCarrier(); final long txCollisions = interfaceStat.getTxCollisions(); final long txDropped = interfaceStat.getTxDropped(); final long txErrors = interfaceStat.getTxErrors(); final long txOverruns = interfaceStat.getTxOverruns(); final long txPackets = interfaceStat.getTxPackets(); final long rxBytes = interfaceStat.getRxBytes(); final long rxDropped = interfaceStat.getRxDropped(); final long rxErrors = interfaceStat.getRxErrors(); final long rxFrame = interfaceStat.getRxFrame(); final long rxOverruns = interfaceStat.getRxOverruns(); final long rxPackets = interfaceStat.getRxPackets(); return new NetworkStatistic(currentTimestamp, speed, txBytes, txCarrier, txCollisions, txDropped, txErrors, txOverruns, txPackets, rxBytes, rxDropped, rxErrors, rxFrame, rxOverruns, rxPackets); }