in pkg/tools/buffer/buffer.go [308:342]
func (r *Buffer) BuildDetails() *list.List {
// if the original buffer is not empty, then query the details from original buffer
if r.originalBuffer != nil {
events := list.New()
fromDataID := r.head.DataID()
var endDataID uint64
if r.endPosition != nil {
endDataID = r.endPosition.DataID()
} else {
endDataID = r.current.DataID()
}
for e := r.originalBuffer.detailEvents.Front(); e != nil; e = e.Next() {
if e.Value == nil {
continue
}
if e.Value.(SocketDataDetail).DataID() >= fromDataID && e.Value.(SocketDataDetail).DataID() <= endDataID {
events.PushBack(e.Value)
}
}
if events.Len() == 0 && log.Enable(logrus.DebugLevel) {
dataIDList := make([]uint64, 0)
for e := r.originalBuffer.detailEvents.Front(); e != nil; e = e.Next() {
if e.Value != nil {
dataIDList = append(dataIDList, e.Value.(SocketDataDetail).DataID())
}
}
log.Infof("cannot found details from original buffer, from data id: %d, end data id: %d, "+
"ref: %p, existing details data id list: %v", fromDataID, endDataID, r.originalBuffer, dataIDList)
}
return events
}
return r.detailEvents
}