1
0
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:
Matias Fontanini
2013-01-28 17:56:59 -03:00
parent 0945e0b29e
commit 3f060de381
3 changed files with 42 additions and 2 deletions

View File

@@ -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.
*/

View File

@@ -62,5 +62,6 @@
#include "packet.h"
#include "timestamp.h"
#include "sll.h"
#include "dhcpv6.h"
#endif // TINS_TINS_H

View File

@@ -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) {