forked from quic-go/quic-go
simplify stream
This commit is contained in:
42
stream.go
42
stream.go
@@ -77,24 +77,12 @@ func (s *Stream) getNextFrameInOrder(wait bool) (*frames.StreamFrame, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
var nextFrameFromChannel *frames.StreamFrame
|
nextFrameFromChannel, err := s.nextFrameInChan(wait)
|
||||||
var ok bool
|
if err != nil {
|
||||||
if wait {
|
return nil, err
|
||||||
select {
|
}
|
||||||
case nextFrameFromChannel, ok = <-s.StreamFrames:
|
if nextFrameFromChannel == nil {
|
||||||
if !ok {
|
return nil, nil
|
||||||
return nil, s.currentErr
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
select {
|
|
||||||
case nextFrameFromChannel, ok = <-s.StreamFrames:
|
|
||||||
if !ok {
|
|
||||||
return nil, s.currentErr
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if nextFrameFromChannel.Offset == s.ReadOffset {
|
if nextFrameFromChannel.Offset == s.ReadOffset {
|
||||||
@@ -111,6 +99,24 @@ func (s *Stream) getNextFrameInOrder(wait bool) (*frames.StreamFrame, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Stream) nextFrameInChan(blocking bool) (f *frames.StreamFrame, err error) {
|
||||||
|
var ok bool
|
||||||
|
if blocking {
|
||||||
|
select {
|
||||||
|
case f, ok = <-s.StreamFrames:
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
select {
|
||||||
|
case f, ok = <-s.StreamFrames:
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !ok {
|
||||||
|
return nil, s.currentErr
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// ReadByte implements io.ByteReader
|
// ReadByte implements io.ByteReader
|
||||||
func (s *Stream) ReadByte() (byte, error) {
|
func (s *Stream) ReadByte() (byte, error) {
|
||||||
// TODO: Optimize
|
// TODO: Optimize
|
||||||
|
|||||||
Reference in New Issue
Block a user