void Statistics::calculateMinMax(const DataFrame& dataFrame, DataFrame& min, DataFrame& max) { if(dataFrame.getTotalDataIn() < min.getTotalDataIn()) min.setTotalDataIn(dataFrame.getTotalDataIn()); if(dataFrame.getTotalDataIn() > max.getTotalDataIn()) max.setTotalDataIn(dataFrame.getTotalDataIn()); if(dataFrame.getTotalDataOut() < min.getTotalDataOut()) min.setTotalDataOut(dataFrame.getTotalDataOut()); if(dataFrame.getTotalDataOut() > max.getTotalDataOut()) max.setTotalDataOut(dataFrame.getTotalDataOut()); if(dataFrame.getTotalPacketsIn() < min.getTotalPacketsIn()) min.setTotalPacketsIn(dataFrame.getTotalPacketsIn()); if(dataFrame.getTotalPacketsIn() > max.getTotalPacketsIn()) max.setTotalPacketsIn(dataFrame.getTotalPacketsIn()); if(dataFrame.getTotalPacketsOut() < min.getTotalPacketsOut()) min.setTotalPacketsOut(dataFrame.getTotalPacketsOut()); if(dataFrame.getTotalPacketsOut() > max.getTotalPacketsOut()) max.setTotalPacketsOut(dataFrame.getTotalPacketsOut()); if(dataFrame.getTotalErrorsIn() < min.getTotalErrorsIn()) min.setTotalErrorsIn(dataFrame.getTotalErrorsIn()); if(dataFrame.getTotalErrorsIn() > max.getTotalErrorsIn()) max.setTotalErrorsIn(dataFrame.getTotalErrorsIn()); if(dataFrame.getTotalErrorsOut() < min.getTotalErrorsOut()) min.setTotalErrorsOut(dataFrame.getTotalErrorsOut()); if(dataFrame.getTotalErrorsOut() > max.getTotalErrorsOut()) max.setTotalErrorsOut(dataFrame.getTotalErrorsOut()); if(dataFrame.getTotalDropsIn() < min.getTotalDropsIn()) min.setTotalDropsIn(dataFrame.getTotalDropsIn()); if(dataFrame.getTotalDropsIn() > max.getTotalDropsIn()) max.setTotalDropsIn(dataFrame.getTotalDropsIn()); if(dataFrame.getTotalDropsOut() < min.getTotalDropsOut()) min.setTotalDropsOut(dataFrame.getTotalDropsOut()); if(dataFrame.getTotalDropsOut() > max.getTotalDropsOut()) max.setTotalDropsOut(dataFrame.getTotalDropsOut()); }
void Device::fixOverflows(DataFrame& dataFrame, const DataFrame& dataFrameOld) { if(!dataFrame.isValid() || !dataFrameOld.isValid()) return; dataFrame.setTotalDataIn(fixOverflow(dataFrame.getTotalDataIn(), dataFrameOld.getTotalDataIn())); dataFrame.setTotalDataOut(fixOverflow(dataFrame.getTotalDataOut(), dataFrameOld.getTotalDataOut())); dataFrame.setTotalPacketsIn(fixOverflow(dataFrame.getTotalPacketsIn(), dataFrameOld.getTotalPacketsIn())); dataFrame.setTotalPacketsOut(fixOverflow(dataFrame.getTotalPacketsOut(), dataFrameOld.getTotalPacketsOut())); dataFrame.setTotalErrorsIn(fixOverflow(dataFrame.getTotalErrorsIn(), dataFrameOld.getTotalErrorsIn())); dataFrame.setTotalErrorsOut(fixOverflow(dataFrame.getTotalErrorsOut(), dataFrameOld.getTotalErrorsOut())); dataFrame.setTotalDropsIn(fixOverflow(dataFrame.getTotalDropsIn(), dataFrameOld.getTotalDropsIn())); dataFrame.setTotalDropsOut(fixOverflow(dataFrame.getTotalDropsOut(), dataFrameOld.getTotalDropsOut())); }
void Statistics::calculateAverage(const DataFrame& dataFrameFrom, const DataFrame& dataFrameTo, DataFrame& result) { float timeSpan = (dataFrameTo.getTimeStampSeconds() + dataFrameTo.getTimeStampMicroseconds() / 1000000.0) - (dataFrameFrom.getTimeStampSeconds() + dataFrameFrom.getTimeStampMicroseconds() / 1000000.0); if(timeSpan <= 0) return; result.setTotalDataIn((unsigned long long)((dataFrameTo.getTotalDataIn() - dataFrameFrom.getTotalDataIn()) / timeSpan)); result.setTotalDataOut((unsigned long long)((dataFrameTo.getTotalDataOut() - dataFrameFrom.getTotalDataOut()) / timeSpan)); result.setTotalPacketsIn((unsigned long long)((dataFrameTo.getTotalPacketsIn() - dataFrameFrom.getTotalPacketsIn()) / timeSpan)); result.setTotalPacketsOut((unsigned long long)((dataFrameTo.getTotalPacketsOut() - dataFrameFrom.getTotalPacketsOut()) / timeSpan)); result.setTotalErrorsIn((unsigned long long)((dataFrameTo.getTotalErrorsIn() - dataFrameFrom.getTotalErrorsIn()) / timeSpan)); result.setTotalErrorsOut((unsigned long long)((dataFrameTo.getTotalErrorsOut() - dataFrameFrom.getTotalErrorsOut()) / timeSpan)); result.setTotalDropsIn((unsigned long long)((dataFrameTo.getTotalDropsIn() - dataFrameFrom.getTotalDropsIn()) / timeSpan)); result.setTotalDropsOut((unsigned long long)((dataFrameTo.getTotalDropsOut() - dataFrameFrom.getTotalDropsOut()) / timeSpan)); }
void DevReaderLinuxProc::readFromDevice(DataFrame& dataFrame) { if(m_deviceName.empty()) return; ifstream fin("/proc/net/dev"); if(!fin.is_open()) return; // skip the two header lines string line; getline(fin, line); getline(fin, line); if(!fin.good()) return; // search for device while(fin.good()) { getline(fin, line); if(line.empty()) continue; string::size_type posEnd = line.find(':'); if(posEnd == string::npos) continue; string interfaceName = trim(line.substr(0, posEnd)); if(interfaceName.empty()) continue; // check if it is the device we want if(m_deviceName != interfaceName) continue; // read device data unsigned long long bytesIn = 0; unsigned long long packetsIn = 0; unsigned long long errorsIn = 0; unsigned long long dropsIn = 0; unsigned long long bytesOut = 0; unsigned long long packetsOut = 0; unsigned long long errorsOut = 0; unsigned long long dropsOut = 0; unsigned long long dummy = 0; istringstream sin(trim(line.substr(posEnd + 1))); sin >> bytesIn >> packetsIn >> errorsIn >> dropsIn >> dummy >> dummy >> dummy >> dummy >> bytesOut >> packetsOut >> errorsOut >> dropsOut; if(sin.fail()) break; dataFrame.setTotalDataIn(bytesIn); dataFrame.setTotalDataOut(bytesOut); dataFrame.setTotalPacketsIn(packetsIn); dataFrame.setTotalPacketsOut(packetsOut); dataFrame.setTotalErrorsIn(errorsIn); dataFrame.setTotalErrorsOut(errorsOut); dataFrame.setTotalDropsIn(dropsIn); dataFrame.setTotalDropsOut(dropsOut); dataFrame.setValid(true); break; } }