simplify stream

This commit is contained in:
Lucas Clemente
2016-04-25 16:25:22 +02:00
parent 284ffc6665
commit 6ac3ab7504

View File

@@ -77,24 +77,12 @@ func (s *Stream) getNextFrameInOrder(wait bool) (*frames.StreamFrame, error) {
}
for {
var nextFrameFromChannel *frames.StreamFrame
var ok bool
if wait {
select {
case nextFrameFromChannel, ok = <-s.StreamFrames:
if !ok {
return nil, s.currentErr
}
}
} else {
select {
case nextFrameFromChannel, ok = <-s.StreamFrames:
if !ok {
return nil, s.currentErr
}
default:
return nil, nil
}
nextFrameFromChannel, err := s.nextFrameInChan(wait)
if err != nil {
return nil, err
}
if nextFrameFromChannel == nil {
return nil, nil
}
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
func (s *Stream) ReadByte() (byte, error) {
// TODO: Optimize