|
|
@ -85,14 +85,14 @@ func (s *Stream) getData() (buf.MultiBuffer, error) { |
|
|
|
return mb, nil |
|
|
|
return mb, nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if s.close { |
|
|
|
|
|
|
|
return nil, io.EOF |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if s.err { |
|
|
|
if s.err { |
|
|
|
return nil, io.ErrClosedPipe |
|
|
|
return nil, io.ErrClosedPipe |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if s.close { |
|
|
|
|
|
|
|
return nil, io.EOF |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return nil, nil |
|
|
|
return nil, nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -121,7 +121,7 @@ func (s *Stream) ReadMultiBuffer() (buf.MultiBuffer, error) { |
|
|
|
|
|
|
|
|
|
|
|
select { |
|
|
|
select { |
|
|
|
case <-s.ctx.Done(): |
|
|
|
case <-s.ctx.Done(): |
|
|
|
return nil, io.EOF |
|
|
|
return nil, s.ctx.Err() |
|
|
|
case <-s.writeSignal.Wait(): |
|
|
|
case <-s.writeSignal.Wait(): |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -142,7 +142,7 @@ func (s *Stream) ReadTimeout(timeout time.Duration) (buf.MultiBuffer, error) { |
|
|
|
|
|
|
|
|
|
|
|
select { |
|
|
|
select { |
|
|
|
case <-s.ctx.Done(): |
|
|
|
case <-s.ctx.Done(): |
|
|
|
return nil, io.EOF |
|
|
|
return nil, s.ctx.Err() |
|
|
|
case <-time.After(timeout): |
|
|
|
case <-time.After(timeout): |
|
|
|
return nil, buf.ErrReadTimeout |
|
|
|
return nil, buf.ErrReadTimeout |
|
|
|
case <-s.writeSignal.Wait(): |
|
|
|
case <-s.writeSignal.Wait(): |
|
|
@ -167,7 +167,7 @@ func (s *Stream) waitForStreamSize() error { |
|
|
|
for s.Size() >= streamSizeLimit { |
|
|
|
for s.Size() >= streamSizeLimit { |
|
|
|
select { |
|
|
|
select { |
|
|
|
case <-s.ctx.Done(): |
|
|
|
case <-s.ctx.Done(): |
|
|
|
return io.ErrClosedPipe |
|
|
|
return s.ctx.Err() |
|
|
|
case <-s.readSignal.Wait(): |
|
|
|
case <-s.readSignal.Wait(): |
|
|
|
if s.err || s.close { |
|
|
|
if s.err || s.close { |
|
|
|
return io.ErrClosedPipe |
|
|
|
return io.ErrClosedPipe |
|
|
@ -227,7 +227,9 @@ func (s *Stream) CloseError() { |
|
|
|
s.data = nil |
|
|
|
s.data = nil |
|
|
|
s.size = 0 |
|
|
|
s.size = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
s.access.Unlock() |
|
|
|
|
|
|
|
|
|
|
|
s.readSignal.Signal() |
|
|
|
s.readSignal.Signal() |
|
|
|
s.writeSignal.Signal() |
|
|
|
s.writeSignal.Signal() |
|
|
|
s.access.Unlock() |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|