00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef PCAP_FRAME_DESCRIPTOR_HH_
00023 # define PCAP_FRAME_DESCRIPTOR_HH_
00024
00025 extern "C"
00026 {
00027 # include <inttypes.h>
00028 }
00029 # include <iostream>
00030
00031 # include <boost/shared_ptr.hpp>
00032 # include <boost/shared_array.hpp>
00033
00034 # include <wipal/pcap/simple_types.hh>
00035
00036 namespace pcapxx
00037 {
00038
00054 struct frame_descriptor
00055 {
00057 typedef boost::shared_ptr<const pkthdr> pkthdr_ptr;
00058
00060 typedef boost::shared_array<uint8_t> bytes_ptr;
00061
00071 frame_descriptor(const pkthdr* header, const void* bytes);
00072
00080 frame_descriptor(const pkthdr_ptr header, const bytes_ptr bytes);
00081
00096 frame_descriptor(std::istream& stream,
00097 unsigned idx,
00098 bool swap,
00099 int32_t zone,
00100 std::streampos* pos);
00101
00103 const pkthdr_ptr& pcap_header() const;
00104
00106 const bytes_ptr& bytes() const;
00107
00109 std::ostream& print(std::ostream&) const;
00110
00112
00113 bool operator == (const frame_descriptor&) const;
00114 bool operator != (const frame_descriptor&) const;
00116
00117 private:
00118 pkthdr_ptr pcap_header_;
00119 bytes_ptr bytes_;
00120 };
00121
00123 std::ostream&
00124 operator << (std::ostream&, const frame_descriptor&);
00125
00126 }
00127
00128 # include "frame_descriptor.hxx"
00129
00130 #endif // ! PCAP_FRAME_DESCRITPOR_HH_