如果使用缓存或者rangeReader读取指定范围的数据,是线程安全的 其他特性继承自FileStream.RangeRead
(httpRange http_range.Range)
| 273 | // 如果使用缓存或者rangeReader读取指定范围的数据,是线程安全的 |
| 274 | // 其他特性继承自FileStream.RangeRead |
| 275 | func (ss *SeekableStream) RangeRead(httpRange http_range.Range) (io.Reader, error) { |
| 276 | if ss.GetFile() == nil && ss.rangeReader != nil { |
| 277 | rc, err := ss.rangeReader.RangeRead(ss.Ctx, httpRange) |
| 278 | if err != nil { |
| 279 | return nil, err |
| 280 | } |
| 281 | ss.Add(rc) |
| 282 | return rc, nil |
| 283 | } |
| 284 | return ss.FileStream.RangeRead(httpRange) |
| 285 | } |
| 286 | |
| 287 | // only provide Reader as full stream when it's demanded. in rapid-upload, we can skip this to save memory |
| 288 | func (ss *SeekableStream) Read(p []byte) (n int, err error) { |