Skip to content

Commit

Permalink
client: Return header directly instead of wrapper struct
Browse files Browse the repository at this point in the history
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
  • Loading branch information
smallhive committed Aug 22, 2023
1 parent 51b2b9a commit dd3557d
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 42 deletions.
9 changes: 1 addition & 8 deletions audit/collect.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ package audit

import (
"context"
"errors"
"fmt"

"github.com/nspcc-dev/neofs-sdk-go/checksum"
"github.com/nspcc-dev/neofs-sdk-go/client"
cid "github.com/nspcc-dev/neofs-sdk-go/container/id"
"github.com/nspcc-dev/neofs-sdk-go/object"
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
"github.com/nspcc-dev/neofs-sdk-go/object/relations"
"github.com/nspcc-dev/neofs-sdk-go/storagegroup"
Expand Down Expand Up @@ -48,16 +46,11 @@ func CollectMembers(
var prmHead client.PrmObjectHead
for _, phyMember := range phyMembers {
addr.SetObject(phyMember)
leaf, err := collector.ObjectHead(ctx, addr.Container(), addr.Object(), signer, prmHead)
hdr, err := collector.ObjectHead(ctx, addr.Container(), addr.Object(), signer, prmHead)
if err != nil {
return nil, fmt.Errorf("head phy member '%s': %w", phyMember.EncodeToString(), err)
}

var hdr object.Object
if !leaf.ReadHeader(&hdr) {
return nil, errors.New("header err")
}

sumPhySize += hdr.PayloadSize()
cs, _ := hdr.PayloadHomomorphicHash()

Expand Down
17 changes: 11 additions & 6 deletions client/object_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -339,8 +339,8 @@ type PrmObjectHead struct {
prmObjectRead
}

// ResObjectHead groups resulting values of ObjectHead operation.
type ResObjectHead struct {
// resObjectHead groups resulting values of ObjectHead operation.
type resObjectHead struct {
// requested object (response doesn't carry the ID)
idObj oid.ID

Expand All @@ -349,7 +349,7 @@ type ResObjectHead struct {

// ReadHeader reads header of the requested object.
// Returns false if header is missing in the response (not read).
func (x *ResObjectHead) ReadHeader(dst *object.Object) bool {
func (x *resObjectHead) ReadHeader(dst *object.Object) bool {
if x.hdr == nil {
return false
}
Expand Down Expand Up @@ -387,7 +387,7 @@ func (x *ResObjectHead) ReadHeader(dst *object.Object) bool {
// - [apistatus.ErrObjectAccessDenied]
// - [apistatus.ErrObjectAlreadyRemoved]
// - [apistatus.ErrSessionTokenExpired]
func (c *Client) ObjectHead(ctx context.Context, containerID cid.ID, objectID oid.ID, signer user.Signer, prm PrmObjectHead) (*ResObjectHead, error) {
func (c *Client) ObjectHead(ctx context.Context, containerID cid.ID, objectID oid.ID, signer user.Signer, prm PrmObjectHead) (*object.Object, error) {
var (
addr v2refs.Address
cidV2 v2refs.ContainerID
Expand Down Expand Up @@ -430,7 +430,7 @@ func (c *Client) ObjectHead(ctx context.Context, containerID cid.ID, objectID oi
return nil, err
}

var res ResObjectHead
var res resObjectHead
if err = c.processResponse(resp); err != nil {
return nil, err
}
Expand All @@ -448,7 +448,12 @@ func (c *Client) ObjectHead(ctx context.Context, containerID cid.ID, objectID oi
res.hdr = v
}

return &res, nil
var hdr object.Object
if !res.ReadHeader(&hdr) {
return nil, errors.New("empty header")
}

return &hdr, nil
}

// PrmObjectRange groups optional parameters of ObjectRange operation.
Expand Down
23 changes: 4 additions & 19 deletions object/relations/relations.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ var (

// HeadExecutor describes methods to get object head.
type HeadExecutor interface {
ObjectHead(ctx context.Context, containerID cid.ID, objectID oid.ID, signer user.Signer, prm client.PrmObjectHead) (*client.ResObjectHead, error)
ObjectHead(ctx context.Context, containerID cid.ID, objectID oid.ID, signer user.Signer, prm client.PrmObjectHead) (*object.Object, error)
}

// SearchExecutor describes methods to search objects.
Expand Down Expand Up @@ -131,7 +131,7 @@ func getSplitInfo(ctx context.Context, header HeadExecutor, cnrID cid.ID, objID
prmHead.WithinSession(*tokens.Session)
}
prmHead.MarkRaw()
res, err := header.ObjectHead(ctx, cnrID, objID, signer, prmHead)
hdr, err := header.ObjectHead(ctx, cnrID, objID, signer, prmHead)

if err != nil {
var errSplit *object.SplitInfoError
Expand All @@ -142,11 +142,6 @@ func getSplitInfo(ctx context.Context, header HeadExecutor, cnrID cid.ID, objID
return nil, fmt.Errorf("raw object header: %w", err)
}

var hdr object.Object
if !res.ReadHeader(&hdr) {
return nil, errors.New("header")
}

if hdr.SplitID() == nil {
return nil, ErrNoSplitInfo
}
Expand Down Expand Up @@ -206,16 +201,11 @@ func listChildrenByLinker(ctx context.Context, header HeadExecutor, cnrID cid.ID
prm.WithinSession(*tokens.Session)
}

res, err := header.ObjectHead(ctx, cnrID, objID, signer, prm)
hdr, err := header.ObjectHead(ctx, cnrID, objID, signer, prm)
if err != nil {
return nil, fmt.Errorf("linking object's header: %w", err)
}

var hdr object.Object
if !res.ReadHeader(&hdr) {
return nil, errors.New("header")
}

return hdr.Children(), nil
}

Expand All @@ -228,16 +218,11 @@ func getLeftSibling(ctx context.Context, header HeadExecutor, cnrID cid.ID, objI
prm.WithinSession(*tokens.Session)
}

res, err := header.ObjectHead(ctx, cnrID, objID, signer, prm)
hdr, err := header.ObjectHead(ctx, cnrID, objID, signer, prm)
if err != nil {
return oid.ID{}, fmt.Errorf("split chain member's header: %w", err)
}

var hdr object.Object
if !res.ReadHeader(&hdr) {
return oid.ID{}, errors.New("header")
}

idMember, ok := hdr.PreviousID()
if !ok {
return oid.ID{}, ErrNoLeftSibling
Expand Down
2 changes: 1 addition & 1 deletion pool/object.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ func (p *Pool) ObjectGetInit(ctx context.Context, containerID cid.ID, objectID o
// Operation is executed within a session automatically created by [Pool] unless parameters explicitly override session settings.
//
// See details in [client.Client.ObjectHead].
func (p *Pool) ObjectHead(ctx context.Context, containerID cid.ID, objectID oid.ID, signer user.Signer, prm client.PrmObjectHead) (*client.ResObjectHead, error) {
func (p *Pool) ObjectHead(ctx context.Context, containerID cid.ID, objectID oid.ID, signer user.Signer, prm client.PrmObjectHead) (*object.Object, error) {
c, err := p.sdkClient()
if err != nil {
return nil, err
Expand Down
11 changes: 3 additions & 8 deletions pool/pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -679,18 +679,13 @@ func (c *clientWrapper) objectHead(ctx context.Context, containerID cid.ID, obje
cliPrm.WithBearerToken(*prm.btoken)
}

var obj object.Object

res, err := cl.ObjectHead(ctx, containerID, objectID, signer, cliPrm)
obj, err := cl.ObjectHead(ctx, containerID, objectID, signer, cliPrm)
c.updateErrorRate(err)
if err != nil {
return obj, fmt.Errorf("read object header via client: %w", err)
}
if !res.ReadHeader(&obj) {
return obj, errors.New("missing object header in response")
return object.Object{}, fmt.Errorf("read object header via client: %w", err)
}

return obj, nil
return *obj, nil
}

// objectRange returns object range reader.
Expand Down

0 comments on commit dd3557d

Please sign in to comment.