70 lines
1.4 KiB
Go
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)
|
|
}
|