add src/TinsNetworkInterfaceCard_t.h (send pdu and store their hash in a thread safe list)

This commit is contained in:
stubbfel
2017-03-02 00:14:53 +01:00
parent 1664136d14
commit 1f40e10d5c
6 changed files with 233 additions and 3 deletions

View File

@@ -0,0 +1,40 @@
#ifndef TINSNETWORKINTERFACECARD_H
#define TINSNETWORKINTERFACECARD_H
#include "TinsNetworkInterfaceCard_t.h"
#include "INetworkInterfaceCard_t.h"
#include "INetworkInterfaceCard.h"
#include "Ip4Packet_t.h"
#include "Ip6Packet_t.h"
class TinsNetworkInterfaceCard : public INetworkInterfaceCard
{
public:
TinsNetworkInterfaceCard();
TinsNetworkInterfaceCard(const Tins::NetworkInterface & networkInterface);
TinsNetworkInterfaceCard(const std::string& name);
TinsNetworkInterfaceCard(const char* name);
TinsNetworkInterfaceCard(const Tins::IPv4Address & ip);
TinsNetworkInterfaceCard(const Tins::IPv6Address & ipv6);
virtual ~TinsNetworkInterfaceCard();
virtual bool handle(IN const Tins::PDU & pdu, IN IPacketHandler * callBackHandler = nullptr) override;
virtual void sendPacket(IN const Tins::PDU & pdu) override;
virtual void startListen() override;
virtual void stopListen() override;
private:
Tins::PDU * getPhyLessPduPtr(IN const Tins::PDU & pdu) const;
void addPduToHashList(IN Tins::PDU &pdu);
bool searchAndRemoveHashListItem(IN const std::size_t removedHash);
UPtrSniffer sniffer;
UPtrSnifferConfiguration snifferConfig;
UPtrPacketSender packetSender;
static ByteVectorHash byteVectorHash;
UPtrHashList sendPduHashList;
UPtrMutex hashListMutex;
};
#endif