mirror of
https://github.com/zr-hebo/sniffer-agent.git
synced 2025-08-11 00:06:11 +08:00
deal uncached prepare qps
This commit is contained in:
@@ -1 +1,3 @@
|
||||
package capture
|
||||
package capture
|
||||
|
||||
const checkCount = 30
|
@@ -106,20 +106,22 @@ func (nc *networkCard) Listen() (receiver chan model.QueryPiece) {
|
||||
// Listen get a connection.
|
||||
func (nc *networkCard) listenNormal() {
|
||||
go func() {
|
||||
aliveCounter := 0
|
||||
handler := initEthernetHandlerFromPacpgo()
|
||||
for {
|
||||
var data []byte
|
||||
data, ci, err := handler.ZeroCopyReadPacketData()
|
||||
if err != nil {
|
||||
log.Error(err.Error())
|
||||
time.Sleep(time.Second*3)
|
||||
continue
|
||||
}
|
||||
var ci gopacket.CaptureInfo
|
||||
var err error
|
||||
|
||||
// capture packets according to a certain probability
|
||||
capturePacketRate := communicator.GetTCPCapturePacketRate()
|
||||
if capturePacketRate <= 0 {
|
||||
time.Sleep(time.Second*3)
|
||||
time.Sleep(time.Second*1)
|
||||
aliveCounter += 1
|
||||
if aliveCounter >= checkCount {
|
||||
aliveCounter = 0
|
||||
nc.receiver <- model.NewBaseQueryPiece(localIPAddr, nc.listenPort, capturePacketRate)
|
||||
}
|
||||
continue
|
||||
|
||||
} else if 0 < capturePacketRate && capturePacketRate < 1.0 {
|
||||
@@ -130,6 +132,14 @@ func (nc *networkCard) listenNormal() {
|
||||
}
|
||||
}
|
||||
|
||||
aliveCounter = 0
|
||||
data, ci, err = handler.ZeroCopyReadPacketData()
|
||||
if err != nil {
|
||||
log.Error(err.Error())
|
||||
time.Sleep(time.Second*3)
|
||||
continue
|
||||
}
|
||||
|
||||
packet := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.NoCopy)
|
||||
m := packet.Metadata()
|
||||
m.CaptureInfo = ci
|
||||
|
Reference in New Issue
Block a user