frostfs-sdk-go/object/range.go
Airat Arifullin 6281a25556
All checks were successful
/ DCO (pull_request) Successful in 1m17s
/ Lint (pull_request) Successful in 2m7s
/ Tests (1.19) (pull_request) Successful in 5m56s
/ Tests (1.20) (pull_request) Successful in 6m37s
[#100] types: Make sdk types as protobuf wrappers
Signed-off-by: Airat Arifullin a.arifullin@yadro.com
2023-07-12 19:08:37 +03:00

70 lines
1.4 KiB
Go

package object
import (
v2object "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object/grpc"
"google.golang.org/protobuf/proto"
)
// Range represents v2-compatible object payload range.
type Range struct {
objectrange *v2object.Range
}
// NewRangeFromV2 wraps v2 Range message to Range.
//
// Nil v2object.Range converts to nil.
func NewRangeFromV2(rV2 *v2object.Range) *Range {
if rV2 == nil {
return nil
}
var objectrange v2object.Range
proto.Merge(&objectrange, rV2)
return &Range{
objectrange: &objectrange,
}
}
// NewRange creates and initializes blank Range.
//
// Defaults:
// - offset: 0;
// - length: 0.
func NewRange() *Range {
return NewRangeFromV2(new(v2object.Range))
}
// ToV2 converts Range to v2 Range message.
//
// Nil Range converts to nil.
func (r *Range) ToV2() *v2object.Range {
if r == nil {
return nil
}
return r.objectrange
}
// GetLength returns payload range size.
func (r *Range) GetLength() uint64 {
if r == nil {
return 0
}
return r.objectrange.GetLength()
}
// SetLength sets payload range size.
func (r *Range) SetLength(v uint64) {
r.objectrange.SetLength(v)
}
// GetOffset sets payload range offset from start.
func (r *Range) GetOffset() uint64 {
if r == nil {
return 0
}
return r.objectrange.GetOffset()
}
// SetOffset gets payload range offset from start.
func (r *Range) SetOffset(v uint64) {
r.objectrange.SetOffset(v)
}