// Copyright 2014 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. // PCAP is a standard file format for network capture files. This also extends // to any capture of packetized intercommunication data. This file provides a // class called PCAP which is a very light wrapper around the file format, // allowing only creating a new PCAP capture file and appending packets to it. // // Example use: // PCAP pcap(new IOFile("test.pcap", "wb")); // pcap.AddPacket(pkt); // pkt is automatically casted to u8* #pragma once #include #include #include "Common/CommonTypes.h" #include "Common/File.h" #include "Common/NonCopyable.h" class PCAP final : public NonCopyable { public: // Takes ownership of the file object. Assumes the file object is already // opened in write mode. explicit PCAP(File::IOFile* fp) : m_fp(fp) { AddHeader(); } template void AddPacket(const T& obj) { AddPacket(reinterpret_cast(&obj), sizeof(obj)); } void AddPacket(const u8* bytes, size_t size); private: void AddHeader(); std::unique_ptr m_fp; };