mirror of
https://github.com/mfontanini/libtins
synced 2026-01-23 02:35:57 +01:00
PacketWriter is now movable.
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
#include <iterator>
|
||||
#include <pcap.h>
|
||||
#include "utils.h"
|
||||
#include "cxxstd.h"
|
||||
|
||||
namespace Tins {
|
||||
class PDU;
|
||||
@@ -65,6 +66,28 @@ public:
|
||||
*/
|
||||
PacketWriter(const std::string &file_name, LinkType lt);
|
||||
|
||||
#if TINS_IS_CXX11
|
||||
/**
|
||||
* \brief Move constructor.
|
||||
*
|
||||
* Note that calling PacketWriter::write on an previously moved
|
||||
* object will lead to undefined behaviour.
|
||||
*
|
||||
* \param rhs The PacketWriter to be moved.
|
||||
*/
|
||||
PacketWriter(PacketWriter &&rhs) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Move assignment operator.
|
||||
*
|
||||
* Note that calling PacketWriter::write on an previously moved
|
||||
* object will lead to undefined behaviour.
|
||||
*
|
||||
* \param rhs The PacketWriter to be moved.
|
||||
*/
|
||||
PacketWriter& operator=(PacketWriter &&rhs) noexcept;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
|
||||
@@ -62,5 +62,6 @@
|
||||
#include "packet.h"
|
||||
#include "timestamp.h"
|
||||
#include "sll.h"
|
||||
#include "dhcpv6.h"
|
||||
|
||||
#endif // TINS_TINS_H
|
||||
|
||||
@@ -47,9 +47,25 @@ PacketWriter::PacketWriter(const std::string &file_name, LinkType lt) {
|
||||
}
|
||||
}
|
||||
|
||||
#if TINS_IS_CXX11
|
||||
PacketWriter::PacketWriter(PacketWriter &&rhs) noexcept {
|
||||
*this = std::move(rhs);
|
||||
}
|
||||
|
||||
PacketWriter& PacketWriter::operator=(PacketWriter &&rhs) noexcept {
|
||||
handle = 0;
|
||||
dumper = 0;
|
||||
std::swap(handle, rhs.handle);
|
||||
std::swap(dumper, rhs.dumper);
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
|
||||
PacketWriter::~PacketWriter() {
|
||||
pcap_dump_close(dumper);
|
||||
pcap_close(handle);
|
||||
if(dumper && handle) {
|
||||
pcap_dump_close(dumper);
|
||||
pcap_close(handle);
|
||||
}
|
||||
}
|
||||
|
||||
void PacketWriter::write(PDU &pdu) {
|
||||
|
||||
Reference in New Issue
Block a user