forked from dolphin-emu/dolphin
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // 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 <cstddef>
 | |
| #include <memory>
 | |
| 
 | |
| #include "Common/CommonTypes.h"
 | |
| #include "Common/FileUtil.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 <typename T>
 | |
|   void AddPacket(const T& obj)
 | |
|   {
 | |
|     AddPacket(reinterpret_cast<const u8*>(&obj), sizeof(obj));
 | |
|   }
 | |
| 
 | |
|   void AddPacket(const u8* bytes, size_t size);
 | |
| 
 | |
| private:
 | |
|   void AddHeader();
 | |
| 
 | |
|   std::unique_ptr<File::IOFile> m_fp;
 | |
| };
 |