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 { 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