package http2
import
func () WriteScheduler {
return &randomWriteScheduler{sq: make(map[uint32]*writeQueue)}
}
type randomWriteScheduler struct {
zero writeQueue
sq map[uint32]*writeQueue
queuePool writeQueuePool
}
func ( *randomWriteScheduler) ( uint32, OpenStreamOptions) {
}
func ( *randomWriteScheduler) ( uint32) {
, := .sq[]
if ! {
return
}
delete(.sq, )
.queuePool.put()
}
func ( *randomWriteScheduler) ( uint32, PriorityParam) {
}
func ( *randomWriteScheduler) ( FrameWriteRequest) {
if .isControl() {
.zero.push()
return
}
:= .StreamID()
, := .sq[]
if ! {
= .queuePool.get()
.sq[] =
}
.push()
}
func ( *randomWriteScheduler) () (FrameWriteRequest, bool) {
if !.zero.empty() {
return .zero.shift(), true
}
for , := range .sq {
if , := .consume(math.MaxInt32); {
if .empty() {
delete(.sq, )
.queuePool.put()
}
return , true
}
}
return FrameWriteRequest{}, false
}