Compare commits
1 commit
master
...
fix/patch/
Author | SHA1 | Date | |
---|---|---|---|
2282032c9b |
2 changed files with 13 additions and 4 deletions
|
@ -47,7 +47,7 @@ type RangeProvider interface {
|
|||
// GetRange reads an original object payload by the given range.
|
||||
// The method returns io.Reader over the data range only. This means if the data is read out,
|
||||
// then GetRange has to be invoked to provide reader over the next range.
|
||||
GetRange(ctx context.Context, rng *objectSDK.Range) io.Reader
|
||||
GetRange(ctx context.Context, rng *objectSDK.Range) io.ReadCloser
|
||||
}
|
||||
|
||||
type patcher struct {
|
||||
|
@ -170,6 +170,7 @@ func (p *patcher) Close(ctx context.Context) (PatchRes, error) {
|
|||
|
||||
func (p *patcher) copyRange(ctx context.Context, rng *objectSDK.Range) error {
|
||||
rdr := p.rangeProvider.GetRange(ctx, rng)
|
||||
defer func() { _ = rdr.Close() }()
|
||||
for {
|
||||
buffOrigPayload := make([]byte, p.readerBuffSize)
|
||||
n, readErr := rdr.Read(buffOrigPayload)
|
||||
|
|
|
@ -41,14 +41,22 @@ type mockRangeProvider struct {
|
|||
|
||||
var _ RangeProvider = (*mockRangeProvider)(nil)
|
||||
|
||||
func (m *mockRangeProvider) GetRange(_ context.Context, rng *objectSDK.Range) io.Reader {
|
||||
func (m *mockRangeProvider) GetRange(_ context.Context, rng *objectSDK.Range) io.ReadCloser {
|
||||
offset := rng.GetOffset()
|
||||
length := rng.GetLength()
|
||||
|
||||
if length == 0 {
|
||||
return bytes.NewReader(m.originalObjectPayload[offset:])
|
||||
return &readCloserImpl{bytes.NewReader(m.originalObjectPayload[offset:])}
|
||||
}
|
||||
return bytes.NewReader(m.originalObjectPayload[offset : offset+length])
|
||||
return &readCloserImpl{bytes.NewReader(m.originalObjectPayload[offset : offset+length])}
|
||||
}
|
||||
|
||||
type readCloserImpl struct {
|
||||
*bytes.Reader
|
||||
}
|
||||
|
||||
func (*readCloserImpl) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func newTestObject() (*objectSDK.Object, oid.Address) {
|
||||
|
|
Loading…
Reference in a new issue