[#1460] blobovnicza: Do not use pointers as the results

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
Pavel Karpy 2022-05-31 15:22:32 +03:00 committed by Pavel Karpy
parent 0e4a1beecf
commit 010253a97a
4 changed files with 12 additions and 12 deletions

View file

@ -29,7 +29,7 @@ func (p *DeletePrm) SetAddress(addr oid.Address) {
// Returns an error of type apistatus.ObjectNotFound if the object to be deleted is not in blobovnicza. // Returns an error of type apistatus.ObjectNotFound if the object to be deleted is not in blobovnicza.
// //
// Should not be called in read-only configuration. // Should not be called in read-only configuration.
func (b *Blobovnicza) Delete(prm DeletePrm) (*DeleteRes, error) { func (b *Blobovnicza) Delete(prm DeletePrm) (DeleteRes, error) {
addrKey := addressKey(prm.addr) addrKey := addressKey(prm.addr)
removed := false removed := false
@ -67,8 +67,8 @@ func (b *Blobovnicza) Delete(prm DeletePrm) (*DeleteRes, error) {
if err == nil && !removed { if err == nil && !removed {
var errNotFound apistatus.ObjectNotFound var errNotFound apistatus.ObjectNotFound
return nil, errNotFound return DeleteRes{}, errNotFound
} }
return nil, err return DeleteRes{}, err
} }

View file

@ -35,7 +35,7 @@ func (p GetRes) Object() []byte {
// //
// Returns an error of type apistatus.ObjectNotFound if the requested object is not // Returns an error of type apistatus.ObjectNotFound if the requested object is not
// presented in Blobovnicza. // presented in Blobovnicza.
func (b *Blobovnicza) Get(prm GetPrm) (*GetRes, error) { func (b *Blobovnicza) Get(prm GetPrm) (GetRes, error) {
var ( var (
data []byte data []byte
addrKey = addressKey(prm.addr) addrKey = addressKey(prm.addr)
@ -58,16 +58,16 @@ func (b *Blobovnicza) Get(prm GetPrm) (*GetRes, error) {
return stop, nil return stop, nil
}) })
}); err != nil { }); err != nil {
return nil, err return GetRes{}, err
} }
if data == nil { if data == nil {
var errNotFound apistatus.ObjectNotFound var errNotFound apistatus.ObjectNotFound
return nil, errNotFound return GetRes{}, errNotFound
} }
return &GetRes{ return GetRes{
obj: data, obj: data,
}, nil }, nil
} }

View file

@ -117,7 +117,7 @@ type IterateRes struct {
// Returns handler's errors directly. Returns nil after iterating finish. // Returns handler's errors directly. Returns nil after iterating finish.
// //
// Handler should not retain object data. Handler must not be nil. // Handler should not retain object data. Handler must not be nil.
func (b *Blobovnicza) Iterate(prm IteratePrm) (*IterateRes, error) { func (b *Blobovnicza) Iterate(prm IteratePrm) (IterateRes, error) {
var elem IterationElement var elem IterationElement
if err := b.boltDB.View(func(tx *bbolt.Tx) error { if err := b.boltDB.View(func(tx *bbolt.Tx) error {
@ -140,10 +140,10 @@ func (b *Blobovnicza) Iterate(prm IteratePrm) (*IterateRes, error) {
}) })
}) })
}); err != nil { }); err != nil {
return nil, err return IterateRes{}, err
} }
return new(IterateRes), nil return IterateRes{}, nil
} }
// IterateObjects is a helper function which iterates over Blobovnicza and passes binary objects to f. // IterateObjects is a helper function which iterates over Blobovnicza and passes binary objects to f.

View file

@ -47,7 +47,7 @@ func (p *PutPrm) SetMarshaledObject(data []byte) {
// Returns ErrFull if blobovnicza is filled. // Returns ErrFull if blobovnicza is filled.
// //
// Should not be called in read-only configuration. // Should not be called in read-only configuration.
func (b *Blobovnicza) Put(prm PutPrm) (*PutRes, error) { func (b *Blobovnicza) Put(prm PutPrm) (PutRes, error) {
sz := uint64(len(prm.objData)) sz := uint64(len(prm.objData))
bucketName := bucketForSize(sz) bucketName := bucketForSize(sz)
key := addressKey(prm.addr) key := addressKey(prm.addr)
@ -76,7 +76,7 @@ func (b *Blobovnicza) Put(prm PutPrm) (*PutRes, error) {
b.incSize(sz) b.incSize(sz)
} }
return nil, err return PutRes{}, err
} }
func addressKey(addr oid.Address) []byte { func addressKey(addr oid.Address) []byte {