aegis-dos-protection/include/Threads/DefenseThread.hpp
2021-10-23 16:53:40 +02:00

51 lines
1.5 KiB
C++

#pragma once
#include "PacketDissection/PacketContainer.hpp"
#include "Treatment/Treatment.hpp"
#include "Threads/ForwardingThread.hpp"
class DefenseThread : public Thread {
public:
DefenseThread(MbufContainerReceiving* mbuf_container_from_inside,
MbufContainerReceiving* mbuf_container_from_outside,
MbufContainerTransmitting* mbuf_container_to_inside,
MbufContainerTransmitting* mbuf_container_to_outside);
~DefenseThread() { delete _treatment; }
void start_treat() { _do_treat = true; }
void stop_treat() { _do_treat = false; }
bool _do_treat;
/**
* @brief Wrapper for the run-method
*
* Static method that calls the run method on a specific thread
* object. This is necessary since s_run is used to start a new thread with
* the dpdk function "rte_eal_remote_launch" which only takes specific types
* of funktions.
*
* @param thread_obj object of type thread the run method is to be called on
* @return int
*/
static int s_run(void* thread_obj);
private:
Treatment* _treatment;
MbufContainerReceiving* _mbuf_container_from_outside;
MbufContainerReceiving* _mbuf_container_from_inside;
MbufContainerTransmitting* _mbuf_container_to_outside;
MbufContainerTransmitting* _mbuf_container_to_inside;
/**
* @brief Run thread
*
* "Main"-routine of a thread. It is executed until the application is quit
* or killed.
*/
void run();
};