44 lines
		
	
	
		
			876 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			876 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <rte_ring_core.h>
 | |
| #include <rte_ring_elem.h>
 | |
| 
 | |
| #include <string>
 | |
| 
 | |
| #include "Threads/Thread.hpp"
 | |
| 
 | |
| struct Stats {
 | |
|     uint64_t attacks;
 | |
|     uint64_t bytes;
 | |
|     uint64_t dropped;
 | |
|     uint64_t packets;
 | |
|     uint64_t work_time;
 | |
|     uint64_t syn_level;
 | |
| 
 | |
|     Stats* operator+=(const Stats* new_stats);
 | |
| };
 | |
| 
 | |
| struct StatsMonitor {
 | |
|     double attacks_per_second;
 | |
|     double attacks_percent;
 | |
|     double bytes_per_second;
 | |
|     double dropped_per_second;
 | |
|     double dropped_percent;
 | |
|     double packets_per_second;
 | |
|     double proc_speed; // process speed
 | |
|     double total_time;
 | |
| };
 | |
| 
 | |
| class StatisticsThread : public Thread {
 | |
|   public:
 | |
|     static int s_run(void* thread_vptr);
 | |
| 
 | |
|     void enqueue_statistics(int& id, Stats* new_stats);
 | |
|     void update_statistics(Stats* new_stats);
 | |
| 
 | |
|   private:
 | |
|     void run();
 | |
|     static rte_ring* _s_queue[16];
 | |
|     static Stats* _s_stats;
 | |
| };
 |