forked from quic-go/quic-go
36 lines
704 B
Go
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
|
|
}
|