@@ -96,15 +96,26 @@ namespace pcpp
96
96
m_DeviceOpened = false ;
97
97
}
98
98
99
+ void IFileDevice::getStatistics (PcapStats& stats) const
100
+ {
101
+ PCPP_LOG_DEBUG (" Statistics requested for file device for filename '" << m_FileName << " '" );
102
+ stats.packetsRecv = m_NumOfPacketsProcessed;
103
+ stats.packetsDrop = m_NumOfPacketsDropped;
104
+ stats.packetsDropByInterface = 0 ;
105
+ }
106
+
107
+ void IFileDevice::resetStatisticCounters ()
108
+ {
109
+ m_NumOfPacketsProcessed = 0 ;
110
+ m_NumOfPacketsDropped = 0 ;
111
+ }
112
+
99
113
// ~~~~~~~~~~~~~~~~~~~~~~~~~
100
114
// IFileReaderDevice members
101
115
// ~~~~~~~~~~~~~~~~~~~~~~~~~
102
116
103
117
IFileReaderDevice::IFileReaderDevice (const std::string& fileName) : IFileDevice(fileName)
104
- {
105
- m_NumOfPacketsNotParsed = 0 ;
106
- m_NumOfPacketsRead = 0 ;
107
- }
118
+ {}
108
119
109
120
IFileReaderDevice* IFileReaderDevice::getReader (const std::string& fileName)
110
121
{
@@ -152,19 +163,15 @@ namespace pcpp
152
163
// ~~~~~~~~~~~~~~~~~~~~~~~~~
153
164
154
165
IFileWriterDevice::IFileWriterDevice (const std::string& fileName) : IFileDevice(fileName)
155
- {
156
- m_NumOfPacketsNotWritten = 0 ;
157
- m_NumOfPacketsWritten = 0 ;
158
- }
166
+ {}
159
167
160
168
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
161
169
// PcapFileReaderDevice members
162
170
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
163
171
164
172
bool PcapFileReaderDevice::open ()
165
173
{
166
- m_NumOfPacketsRead = 0 ;
167
- m_NumOfPacketsNotParsed = 0 ;
174
+ resetStatisticCounters ();
168
175
169
176
if (m_PcapDescriptor != nullptr )
170
177
{
@@ -217,14 +224,6 @@ namespace pcpp
217
224
return checkNanoSupport ();
218
225
}
219
226
220
- void PcapFileReaderDevice::getStatistics (PcapStats& stats) const
221
- {
222
- stats.packetsRecv = m_NumOfPacketsRead;
223
- stats.packetsDrop = m_NumOfPacketsNotParsed;
224
- stats.packetsDropByInterface = 0 ;
225
- PCPP_LOG_DEBUG (" Statistics received for reader device for filename '" << m_FileName << " '" );
226
- }
227
-
228
227
bool PcapFileReaderDevice::getNextPacket (RawPacket& rawPacket)
229
228
{
230
229
rawPacket.clear ();
@@ -255,7 +254,7 @@ namespace pcpp
255
254
PCPP_LOG_ERROR (" Couldn't set data to raw packet" );
256
255
return false ;
257
256
}
258
- m_NumOfPacketsRead++ ;
257
+ reportPacketProcessed () ;
259
258
return true ;
260
259
}
261
260
@@ -298,14 +297,14 @@ namespace pcpp
298
297
if ((!m_AppendMode && m_PcapDescriptor == nullptr ) || (m_PcapDumpHandler == nullptr ))
299
298
{
300
299
PCPP_LOG_ERROR (" Device not opened" );
301
- m_NumOfPacketsNotWritten++ ;
300
+ reportPacketDropped () ;
302
301
return false ;
303
302
}
304
303
305
304
if (packet.getLinkLayerType () != m_PcapLinkLayerType)
306
305
{
307
306
PCPP_LOG_ERROR (" Cannot write a packet with a different link layer type" );
308
- m_NumOfPacketsNotWritten++ ;
307
+ reportPacketDropped () ;
309
308
return false ;
310
309
}
311
310
@@ -348,7 +347,7 @@ namespace pcpp
348
347
fwrite (packet.getRawData (), pktHdrTemp.caplen , 1 , m_File);
349
348
}
350
349
PCPP_LOG_DEBUG (" Packet written successfully to '" << m_FileName << " '" );
351
- m_NumOfPacketsWritten++ ;
350
+ reportPacketProcessed () ;
352
351
return true ;
353
352
}
354
353
@@ -408,8 +407,7 @@ namespace pcpp
408
407
break ;
409
408
}
410
409
411
- m_NumOfPacketsNotWritten = 0 ;
412
- m_NumOfPacketsWritten = 0 ;
410
+ resetStatisticCounters ();
413
411
414
412
#if defined(PCAP_TSTAMP_PRECISION_NANO)
415
413
auto pcapDescriptor = internal::PcapHandle (pcap_open_dead_with_tstamp_precision (
@@ -534,14 +532,6 @@ namespace pcpp
534
532
PCPP_LOG_DEBUG (" File writer closed for file '" << m_FileName << " '" );
535
533
}
536
534
537
- void PcapFileWriterDevice::getStatistics (PcapStats& stats) const
538
- {
539
- stats.packetsRecv = m_NumOfPacketsWritten;
540
- stats.packetsDrop = m_NumOfPacketsNotWritten;
541
- stats.packetsDropByInterface = 0 ;
542
- PCPP_LOG_DEBUG (" Statistics received for writer device for filename '" << m_FileName << " '" );
543
- }
544
-
545
535
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
546
536
// PcapNgFileReaderDevice members
547
537
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -553,8 +543,7 @@ namespace pcpp
553
543
554
544
bool PcapNgFileReaderDevice::open ()
555
545
{
556
- m_NumOfPacketsRead = 0 ;
557
- m_NumOfPacketsNotParsed = 0 ;
546
+ resetStatisticCounters ();
558
547
559
548
if (m_LightPcapNg != nullptr )
560
549
{
@@ -623,7 +612,7 @@ namespace pcpp
623
612
if (pktHeader.comment != nullptr && pktHeader.comment_length > 0 )
624
613
packetComment = std::string (pktHeader.comment , pktHeader.comment_length );
625
614
626
- m_NumOfPacketsRead++ ;
615
+ reportPacketProcessed () ;
627
616
return true ;
628
617
}
629
618
@@ -633,14 +622,6 @@ namespace pcpp
633
622
return getNextPacket (rawPacket, temp);
634
623
}
635
624
636
- void PcapNgFileReaderDevice::getStatistics (PcapStats& stats) const
637
- {
638
- stats.packetsRecv = m_NumOfPacketsRead;
639
- stats.packetsDrop = m_NumOfPacketsNotParsed;
640
- stats.packetsDropByInterface = 0 ;
641
- PCPP_LOG_DEBUG (" Statistics received for pcapng reader device for filename '" << m_FileName << " '" );
642
- }
643
-
644
625
bool PcapNgFileReaderDevice::setFilter (std::string filterAsString)
645
626
{
646
627
return m_BpfWrapper.setFilter (filterAsString);
@@ -734,7 +715,7 @@ namespace pcpp
734
715
if (m_LightPcapNg == nullptr )
735
716
{
736
717
PCPP_LOG_ERROR (" Device not opened" );
737
- m_NumOfPacketsNotWritten++ ;
718
+ reportPacketDropped () ;
738
719
return false ;
739
720
}
740
721
@@ -763,7 +744,7 @@ namespace pcpp
763
744
const uint8_t * pktData = packet.getRawData ();
764
745
765
746
light_write_packet (toLightPcapNgT (m_LightPcapNg), &pktHeader, pktData);
766
- m_NumOfPacketsWritten++ ;
747
+ reportPacketProcessed () ;
767
748
return true ;
768
749
}
769
750
@@ -815,8 +796,7 @@ namespace pcpp
815
796
return true ;
816
797
}
817
798
818
- m_NumOfPacketsNotWritten = 0 ;
819
- m_NumOfPacketsWritten = 0 ;
799
+ resetStatisticCounters ();
820
800
821
801
light_pcapng_file_info* info;
822
802
if (metadata == nullptr )
@@ -857,8 +837,7 @@ namespace pcpp
857
837
return true ;
858
838
}
859
839
860
- m_NumOfPacketsNotWritten = 0 ;
861
- m_NumOfPacketsWritten = 0 ;
840
+ resetStatisticCounters ();
862
841
863
842
m_LightPcapNg = toLightPcapNgHandle (light_pcapng_open_append (m_FileName.c_str ()));
864
843
if (m_LightPcapNg == nullptr )
@@ -895,14 +874,6 @@ namespace pcpp
895
874
PCPP_LOG_DEBUG (" File writer closed for file '" << m_FileName << " '" );
896
875
}
897
876
898
- void PcapNgFileWriterDevice::getStatistics (PcapStats& stats) const
899
- {
900
- stats.packetsRecv = m_NumOfPacketsWritten;
901
- stats.packetsDrop = m_NumOfPacketsNotWritten;
902
- stats.packetsDropByInterface = 0 ;
903
- PCPP_LOG_DEBUG (" Statistics received for pcap-ng writer device for filename '" << m_FileName << " '" );
904
- }
905
-
906
877
bool PcapNgFileWriterDevice::setFilter (std::string filterAsString)
907
878
{
908
879
return m_BpfWrapper.setFilter (filterAsString);
@@ -919,8 +890,7 @@ namespace pcpp
919
890
920
891
bool SnoopFileReaderDevice::open ()
921
892
{
922
- m_NumOfPacketsRead = 0 ;
923
- m_NumOfPacketsNotParsed = 0 ;
893
+ resetStatisticCounters ();
924
894
925
895
m_snoopFile.open (m_FileName.c_str (), std::ifstream::binary);
926
896
if (!m_snoopFile.is_open ())
@@ -970,14 +940,6 @@ namespace pcpp
970
940
return true ;
971
941
}
972
942
973
- void SnoopFileReaderDevice::getStatistics (PcapStats& stats) const
974
- {
975
- stats.packetsRecv = m_NumOfPacketsRead;
976
- stats.packetsDrop = m_NumOfPacketsNotParsed;
977
- stats.packetsDropByInterface = 0 ;
978
- PCPP_LOG_DEBUG (" Statistics received for reader device for filename '" << m_FileName << " '" );
979
- }
980
-
981
943
bool SnoopFileReaderDevice::getNextPacket (RawPacket& rawPacket)
982
944
{
983
945
rawPacket.clear ();
@@ -1019,7 +981,7 @@ namespace pcpp
1019
981
return false ;
1020
982
}
1021
983
1022
- m_NumOfPacketsRead++ ;
984
+ reportPacketProcessed () ;
1023
985
return true ;
1024
986
}
1025
987
0 commit comments