/** * Reports statistics. */ static void reportStats(void) { struct timeval now; double interval; double rate; char buf[80]; int logmask; unsigned long byteCount; unsigned long packetCount, missedPacketCount, prodCount; static unsigned long totalPacketCount; static unsigned long totalMissedPacketCount; static unsigned long totalProdCount; static unsigned long totalByteCount; (void)gettimeofday(&now, NULL); readerGetStatistics(reader, &byteCount); pmGetStatistics(productMaker, &packetCount, &missedPacketCount, &prodCount); totalByteCount += byteCount; totalPacketCount += packetCount; totalMissedPacketCount += missedPacketCount; totalProdCount += prodCount; logmask = setulogmask(LOG_UPTO(LOG_NOTICE)); nplStart("----------------------------------------"); nplAdd("Ingestion Statistics:"); nplAdd(" Since Previous Report (or Start):"); interval = duration(&now, &reportTime); encodeDuration(buf, sizeof(buf), interval); nplAdd(" Duration %s", buf); nplAdd(" Raw Data:"); nplAdd(" Octets %lu", CHAR_BIT*byteCount/8); nplAdd(" Mean Rate:"); rate = (byteCount/interval)*(CHAR_BIT/8.0); nplAdd(" Octets %g/s", rate); nplAdd(" Bits %g/s", 8*rate); nplAdd(" Received packets:"); nplAdd(" Number %lu", packetCount); nplAdd(" Mean Rate %g/s", packetCount/interval); nplAdd(" Missed packets:"); nplAdd(" Number %lu", missedPacketCount); nplAdd(" %% %g", 100.0 * missedPacketCount / (missedPacketCount + packetCount)); nplAdd(" Products:"); nplAdd(" Inserted %lu", prodCount); nplAdd(" Mean Rate %g/s", prodCount/interval); nplAdd(" Since Start:"); interval = duration(&now, &startTime); encodeDuration(buf, sizeof(buf), interval); nplAdd(" Duration %s", buf); nplAdd(" Raw Data:"); nplAdd(" Octets %lu", CHAR_BIT*totalByteCount/8); nplAdd(" Mean Rate:"); rate = (totalByteCount/interval)*(CHAR_BIT/8.0); nplAdd(" Octets %g/s", rate); nplAdd(" Bits %g/s", 8*rate); nplAdd(" Received packets:"); nplAdd(" Number %lu", totalPacketCount); nplAdd(" Mean Rate %g/s", totalPacketCount/interval); nplAdd(" Missed packets:"); nplAdd(" Number %lu", totalMissedPacketCount); nplAdd(" %% %g", 100.0 * totalMissedPacketCount / (totalMissedPacketCount + totalPacketCount)); nplAdd(" Products:"); nplAdd(" Inserted %lu", totalProdCount); nplAdd(" Mean Rate %g/s", totalProdCount/interval); nplAdd("----------------------------------------"); nplLog(LOG_NOTICE); (void)setulogmask(logmask); reportTime = now; }
/** * Reports statistics. */ static void reportStats(void) { struct timeval now; double interval; double rate; char buf[80]; int logmask; unsigned long byteCount; unsigned long packetCount, missedPacketCount, prodCount; static unsigned long totalPacketCount; static unsigned long totalMissedPacketCount; static unsigned long totalProdCount; static unsigned long totalByteCount; (void)gettimeofday(&now, NULL); readerGetStatistics(reader, &byteCount); pmGetStatistics(productMaker, &packetCount, &missedPacketCount, &prodCount); totalByteCount += byteCount; totalPacketCount += packetCount; totalMissedPacketCount += missedPacketCount; totalProdCount += prodCount; logmask = setulogmask(LOG_UPTO(LOG_NOTICE)); log_start("----------------------------------------"); log_add("Ingestion Statistics:"); log_add(" Since Previous Report (or Start):"); interval = duration(&now, &reportTime); encodeDuration(buf, sizeof(buf), interval); log_add(" Duration %s", buf); log_add(" Raw Data:"); log_add(" Octets %lu", CHAR_BIT*byteCount/8); log_add(" Mean Rate:"); rate = (byteCount/interval)*(CHAR_BIT/8.0); log_add(" Octets %g/s", rate); log_add(" Bits %g/s", 8*rate); log_add(" Received packets:"); log_add(" Number %lu", packetCount); log_add(" Mean Rate %g/s", packetCount/interval); log_add(" Missed packets:"); log_add(" Number %lu", missedPacketCount); log_add(" %% %g", 100.0 * missedPacketCount / (missedPacketCount + packetCount)); log_add(" Products:"); log_add(" Inserted %lu", prodCount); log_add(" Mean Rate %g/s", prodCount/interval); log_add(" Since Start:"); interval = duration(&now, &startTime); encodeDuration(buf, sizeof(buf), interval); log_add(" Duration %s", buf); log_add(" Raw Data:"); log_add(" Octets %lu", CHAR_BIT*totalByteCount/8); log_add(" Mean Rate:"); rate = (totalByteCount/interval)*(CHAR_BIT/8.0); log_add(" Octets %g/s", rate); log_add(" Bits %g/s", 8*rate); log_add(" Received packets:"); log_add(" Number %lu", totalPacketCount); log_add(" Mean Rate %g/s", totalPacketCount/interval); log_add(" Missed packets:"); log_add(" Number %lu", totalMissedPacketCount); log_add(" %% %g", 100.0 * totalMissedPacketCount / (totalMissedPacketCount + totalPacketCount)); log_add(" Products:"); log_add(" Inserted %lu", totalProdCount); log_add(" Mean Rate %g/s", totalProdCount/interval); #ifdef RETRANS_SUPPORT if(retrans_xmit_enable == OPTION_ENABLE){ log_add(" Retransmissions:"); log_add(" Requested %lu", total_prods_retrans_rqstd); log_add(" Received %lu", total_prods_retrans_rcvd); log_add(" Duplicates %lu", total_prods_retrans_rcvd_notlost); log_add(" No duplicates %lu", total_prods_retrans_rcvd_lost); } #endif log_add("----------------------------------------"); log_log(LOG_NOTICE); (void)setulogmask(logmask); reportTime = now; }