in pkg/profiling/task/network/analyze/buffer/buffer.go [461:491]
func (r *Buffer) AppendDataEvent(event *events.SocketDataUploadEvent) {
r.eventLocker.Lock()
defer r.eventLocker.Unlock()
if r.dataEvents.Len() == 0 {
r.dataEvents.PushFront(event)
return
}
if r.dataEvents.Back().Value.(events.SocketDataBuffer).DataID() < event.DataID() {
r.dataEvents.PushBack(event)
return
}
beenAdded := false
for element := r.dataEvents.Front(); element != nil; element = element.Next() {
existEvent := element.Value.(events.SocketDataBuffer)
if existEvent.DataID() > event.DataID() {
// data id needs order
beenAdded = true
} else if existEvent.DataID() == event.DataID() && existEvent.DataSequence() > event.DataSequence() {
// following the sequence order
beenAdded = true
}
if beenAdded {
r.dataEvents.InsertBefore(event, element)
break
}
}
if !beenAdded {
r.dataEvents.PushBack(event)
}
}