forked from TrueCloudLab/frostfs-node
[#211] blobstor: Refactor GetBig parameters and result
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
fb6857a1cb
commit
6813f40665
3 changed files with 44 additions and 23 deletions
|
@ -11,33 +11,17 @@ import (
|
||||||
|
|
||||||
// GetBigPrm groups the parameters of GetBig operation.
|
// GetBigPrm groups the parameters of GetBig operation.
|
||||||
type GetBigPrm struct {
|
type GetBigPrm struct {
|
||||||
addr *objectSDK.Address
|
address
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetBigRes groups resulting values of GetBig operation.
|
// GetBigRes groups resulting values of GetBig operation.
|
||||||
type GetBigRes struct {
|
type GetBigRes struct {
|
||||||
obj *object.Object
|
roObject
|
||||||
}
|
}
|
||||||
|
|
||||||
// ErrObjectNotFound is returns on read operations requested on a missing object.
|
// ErrObjectNotFound is returns on read operations requested on a missing object.
|
||||||
var ErrObjectNotFound = errors.New("object not found")
|
var ErrObjectNotFound = errors.New("object not found")
|
||||||
|
|
||||||
// WithAddress is a GetBig option to set the address of the requested object.
|
|
||||||
//
|
|
||||||
// Option is required.
|
|
||||||
func (p *GetBigPrm) WithAddress(addr *objectSDK.Address) *GetBigPrm {
|
|
||||||
if p != nil {
|
|
||||||
p.addr = addr
|
|
||||||
}
|
|
||||||
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
// Object returns the requested object.
|
|
||||||
func (r *GetBigRes) Object() *object.Object {
|
|
||||||
return r.obj
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetBig reads the object from shallow dir of BLOB storage by address.
|
// GetBig reads the object from shallow dir of BLOB storage by address.
|
||||||
//
|
//
|
||||||
// Returns any error encountered that
|
// Returns any error encountered that
|
||||||
|
@ -68,7 +52,9 @@ func (b *BlobStor) GetBig(prm *GetBigPrm) (*GetBigRes, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return &GetBigRes{
|
return &GetBigRes{
|
||||||
obj: obj,
|
roObject: roObject{
|
||||||
|
obj: obj,
|
||||||
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
33
pkg/local_object_storage/blobstor/util.go
Normal file
33
pkg/local_object_storage/blobstor/util.go
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
package blobstor
|
||||||
|
|
||||||
|
import (
|
||||||
|
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||||
|
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
||||||
|
)
|
||||||
|
|
||||||
|
type address struct {
|
||||||
|
addr *objectSDK.Address
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAddress sets the address of the requested object.
|
||||||
|
func (a *address) SetAddress(addr *objectSDK.Address) {
|
||||||
|
a.addr = addr
|
||||||
|
}
|
||||||
|
|
||||||
|
type roObject struct {
|
||||||
|
obj *object.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// Object returns the object.
|
||||||
|
func (o roObject) Object() *object.Object {
|
||||||
|
return o.obj
|
||||||
|
}
|
||||||
|
|
||||||
|
type rwObject struct {
|
||||||
|
roObject
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetObject sets the object.
|
||||||
|
func (o *rwObject) SetObject(obj *object.Object) {
|
||||||
|
o.obj = obj
|
||||||
|
}
|
|
@ -77,10 +77,12 @@ func (s *Shard) Get(prm *GetPrm) (*GetRes, error) {
|
||||||
if prm.ln < 0 {
|
if prm.ln < 0 {
|
||||||
// try to read from WriteCache
|
// try to read from WriteCache
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
res, err := s.blobStor.GetBig(
|
|
||||||
new(blobstor.GetBigPrm).
|
// form GetBig parameters
|
||||||
WithAddress(prm.addr),
|
getBigPrm := new(blobstor.GetBigPrm)
|
||||||
)
|
getBigPrm.SetAddress(prm.addr)
|
||||||
|
|
||||||
|
res, err := s.blobStor.GetBig(getBigPrm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, blobstor.ErrObjectNotFound) {
|
if errors.Is(err, blobstor.ErrObjectNotFound) {
|
||||||
err = ErrObjectNotFound
|
err = ErrObjectNotFound
|
||||||
|
|
Loading…
Reference in a new issue