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) }