00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef PCAP_DUMPER_HH_
00023 # define PCAP_DUMPER_HH_
00024
00025 extern "C"
00026 {
00027 # include <inttypes.h>
00028 }
00029 # include <string>
00030 # include <vector>
00031 # include <fstream>
00032 # include <cstdlib>
00033
00034 # include <boost/shared_ptr.hpp>
00035
00036 # include <wipal/pcap/simple_types.hh>
00037 # include <wipal/pcap/frame_descriptor.hh>
00038 # include <wipal/tool/static_base.hh>
00039
00040 namespace pcapxx
00041 {
00042
00043 template <class B>
00044 struct descriptor;
00045
00051 struct dumper
00052 {
00053 dumper(const std::string& filename,
00054 int32_t type,
00055 int32_t snaplen);
00056
00058 void operator () (const pkthdr*, const void* pkt);
00059
00061 template <class D> void operator () (const frame_descriptor<D>&);
00062
00064 descriptor<tool::bottom> desc() const;
00065
00066 private:
00067 std::vector<std::streampos> marks_;
00068
00069 std::string file_name_;
00070 size_t pkt_count_;
00071 boost::shared_ptr<std::ofstream> output_;
00072 };
00073
00074 }
00075
00076 # include "dumper.hxx"
00077
00078 #endif // ! PCAP_DESCRITPOR_HH_