forked from TrueCloudLab/frostfs-api-go
[#159] sdk: Define object range in object pkg
Define Range type in object package. Replace Range in client package with the new one. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
14fa89b819
commit
d19e5418da
3 changed files with 80 additions and 40 deletions
|
@ -19,10 +19,6 @@ import (
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Range struct {
|
|
||||||
ln, off uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
type PutObjectParams struct {
|
type PutObjectParams struct {
|
||||||
obj *object.Object
|
obj *object.Object
|
||||||
|
|
||||||
|
@ -48,7 +44,7 @@ type ObjectHeaderParams struct {
|
||||||
type RangeDataParams struct {
|
type RangeDataParams struct {
|
||||||
addr *object.Address
|
addr *object.Address
|
||||||
|
|
||||||
r *Range
|
r *object.Range
|
||||||
|
|
||||||
w io.Writer
|
w io.Writer
|
||||||
}
|
}
|
||||||
|
@ -58,7 +54,7 @@ type RangeChecksumParams struct {
|
||||||
|
|
||||||
addr *object.Address
|
addr *object.Address
|
||||||
|
|
||||||
rs []*Range
|
rs []*object.Range
|
||||||
|
|
||||||
salt []byte
|
salt []byte
|
||||||
}
|
}
|
||||||
|
@ -93,11 +89,11 @@ const TZSize = 64
|
||||||
|
|
||||||
const searchQueryVersion uint32 = 1
|
const searchQueryVersion uint32 = 1
|
||||||
|
|
||||||
func rangesToV2(rs []*Range) []*v2object.Range {
|
func rangesToV2(rs []*object.Range) []*v2object.Range {
|
||||||
r2 := make([]*v2object.Range, 0, len(rs))
|
r2 := make([]*v2object.Range, 0, len(rs))
|
||||||
|
|
||||||
for i := range rs {
|
for i := range rs {
|
||||||
r2 = append(r2, rs[i].toV2())
|
r2 = append(r2, rs[i].ToV2())
|
||||||
}
|
}
|
||||||
|
|
||||||
return r2
|
return r2
|
||||||
|
@ -114,34 +110,6 @@ func (t checksumType) toV2() v2refs.ChecksumType {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Range) WithLength(v uint64) *Range {
|
|
||||||
if r != nil {
|
|
||||||
r.ln = v
|
|
||||||
}
|
|
||||||
|
|
||||||
return r
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Range) WithOffset(v uint64) *Range {
|
|
||||||
if r != nil {
|
|
||||||
r.off = v
|
|
||||||
}
|
|
||||||
|
|
||||||
return r
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Range) toV2() *v2object.Range {
|
|
||||||
if r != nil {
|
|
||||||
r2 := new(v2object.Range)
|
|
||||||
r2.SetOffset(r.off)
|
|
||||||
r2.SetLength(r.ln)
|
|
||||||
|
|
||||||
return r2
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *putObjectV2Writer) Write(p []byte) (int, error) {
|
func (w *putObjectV2Writer) Write(p []byte) (int, error) {
|
||||||
w.chunkPart.SetChunk(p)
|
w.chunkPart.SetChunk(p)
|
||||||
|
|
||||||
|
@ -620,7 +588,7 @@ func (p *RangeDataParams) WithAddress(v *object.Address) *RangeDataParams {
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *RangeDataParams) WithRange(v *Range) *RangeDataParams {
|
func (p *RangeDataParams) WithRange(v *object.Range) *RangeDataParams {
|
||||||
if p != nil {
|
if p != nil {
|
||||||
p.r = v
|
p.r = v
|
||||||
}
|
}
|
||||||
|
@ -680,7 +648,7 @@ func (c *Client) objectPayloadRangeV2(ctx context.Context, p *RangeDataParams, o
|
||||||
|
|
||||||
// fill body fields
|
// fill body fields
|
||||||
body.SetAddress(p.addr.ToV2())
|
body.SetAddress(p.addr.ToV2())
|
||||||
body.SetRange(p.r.toV2())
|
body.SetRange(p.r.ToV2())
|
||||||
|
|
||||||
// sign the request
|
// sign the request
|
||||||
if err := signature.SignServiceMessage(c.key, req); err != nil {
|
if err := signature.SignServiceMessage(c.key, req); err != nil {
|
||||||
|
@ -695,7 +663,7 @@ func (c *Client) objectPayloadRangeV2(ctx context.Context, p *RangeDataParams, o
|
||||||
|
|
||||||
var payload []byte
|
var payload []byte
|
||||||
if p.w != nil {
|
if p.w != nil {
|
||||||
payload = make([]byte, p.r.ln)
|
payload = make([]byte, p.r.GetLength())
|
||||||
}
|
}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
|
@ -736,7 +704,7 @@ func (p *RangeChecksumParams) WithAddress(v *object.Address) *RangeChecksumParam
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *RangeChecksumParams) WithRangeList(rs ...*Range) *RangeChecksumParams {
|
func (p *RangeChecksumParams) WithRangeList(rs ...*object.Range) *RangeChecksumParams {
|
||||||
if p != nil {
|
if p != nil {
|
||||||
p.rs = rs
|
p.rs = rs
|
||||||
}
|
}
|
||||||
|
|
47
pkg/object/range.go
Normal file
47
pkg/object/range.go
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
package object
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/nspcc-dev/neofs-api-go/v2/object"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Range represents v2-compatible object payload range.
|
||||||
|
type Range object.Range
|
||||||
|
|
||||||
|
// NewRangeFromV2 wraps v2 Range message to Range.
|
||||||
|
func NewRangeFromV2(rV2 *object.Range) *Range {
|
||||||
|
return (*Range)(rV2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewRange creates and initializes blank Range.
|
||||||
|
func NewRange() *Range {
|
||||||
|
return NewRangeFromV2(new(object.Range))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToV2 converts Range to v2 Range message.
|
||||||
|
func (r *Range) ToV2() *object.Range {
|
||||||
|
return (*object.Range)(r)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLength returns payload range size.
|
||||||
|
func (r *Range) GetLength() uint64 {
|
||||||
|
return (*object.Range)(r).
|
||||||
|
GetLength()
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLength sets payload range size.
|
||||||
|
func (r *Range) SetLength(v uint64) {
|
||||||
|
(*object.Range)(r).
|
||||||
|
SetLength(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOffset sets payload range offset from start.
|
||||||
|
func (r *Range) GetOffset() uint64 {
|
||||||
|
return (*object.Range)(r).
|
||||||
|
GetOffset()
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOffset gets payload range offset from start.
|
||||||
|
func (r *Range) SetOffset(v uint64) {
|
||||||
|
(*object.Range)(r).
|
||||||
|
SetOffset(v)
|
||||||
|
}
|
25
pkg/object/range_test.go
Normal file
25
pkg/object/range_test.go
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
package object
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRange_SetOffset(t *testing.T) {
|
||||||
|
r := NewRange()
|
||||||
|
|
||||||
|
off := uint64(13)
|
||||||
|
r.SetOffset(off)
|
||||||
|
|
||||||
|
require.Equal(t, off, r.GetOffset())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRange_SetLength(t *testing.T) {
|
||||||
|
r := NewRange()
|
||||||
|
|
||||||
|
ln := uint64(7)
|
||||||
|
r.SetLength(ln)
|
||||||
|
|
||||||
|
require.Equal(t, ln, r.GetLength())
|
||||||
|
}
|
Loading…
Reference in a new issue