Files
quic-go/stream_frame_sorter.go
2016-05-11 22:30:14 +02:00

36 lines
704 B
Go

package quic
import "github.com/lucas-clemente/quic-go/frames"
// TODO: This is currently quite inefficient
type streamFrameSorter struct {
items []*frames.StreamFrame
}
func (s *streamFrameSorter) Push(val *frames.StreamFrame) {
for i, f := range s.items {
if f.Offset > val.Offset {
// Insert here
s.items = append(s.items, nil)
copy(s.items[i+1:], s.items[i:])
s.items[i] = val
return
}
}
// Append at the end
s.items = append(s.items, val)
}
func (s *streamFrameSorter) Pop() *frames.StreamFrame {
res := s.items[0]
s.items = s.items[1:]
return res
}
func (s *streamFrameSorter) Head() *frames.StreamFrame {
if len(s.items) > 0 {
return s.items[0]
}
return nil
}