[#1238] Adopt neofs-node for non pointer slices in SDK

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
Alex Vanin 2022-03-15 15:11:35 +03:00 committed by Alex Vanin
parent 9fad29dfe0
commit 8f476f3c4d
41 changed files with 146 additions and 148 deletions

View file

@ -16,7 +16,7 @@ const (
defaultPrice = 0
)
func parseAttributes(c *config.Config) []*netmap.NodeAttribute {
func parseAttributes(c *config.Config) []netmap.NodeAttribute {
if nodeconfig.Relay(c) {
return nil
}
@ -44,7 +44,7 @@ func listWellKnownAttrDesc() map[string]wellKnownNodeAttrDesc {
}
}
func addWellKnownAttributes(attrs []*netmap.NodeAttribute) []*netmap.NodeAttribute {
func addWellKnownAttributes(attrs []netmap.NodeAttribute) []netmap.NodeAttribute {
mWellKnown := listWellKnownAttrDesc()
// check how user defined well-known attributes
@ -59,11 +59,10 @@ func addWellKnownAttributes(attrs []*netmap.NodeAttribute) []*netmap.NodeAttribu
}
// set default value of the attribute
a := netmap.NewNodeAttribute()
a.SetKey(key)
a.SetValue(desc.defaultVal)
attrs = append(attrs, a)
index := len(attrs)
attrs = append(attrs, netmap.NodeAttribute{})
attrs[index].SetKey(key)
attrs[index].SetValue(desc.defaultVal)
}
return attrs

View file

@ -468,7 +468,7 @@ func (c *usedSpaceService) AnnounceUsedSpace(ctx context.Context, req *container
}
for _, aV2 := range req.GetBody().GetAnnouncements() {
if err := c.processLoadValue(ctx, *containerSDK.NewAnnouncementFromV2(aV2), passedRoute, w); err != nil {
if err := c.processLoadValue(ctx, *containerSDK.NewAnnouncementFromV2(&aV2), passedRoute, w); err != nil {
return nil, err
}
}

View file

@ -354,7 +354,7 @@ func (n *netInfo) Dump(ver *refs.Version) (*netmapV2.NetworkInfo, error) {
}
var (
ps []*netmapV2.NetworkParameter
ps []netmapV2.NetworkParameter
netCfg netmapV2.NetworkConfig
)
@ -364,7 +364,7 @@ func (n *netInfo) Dump(ver *refs.Version) (*netmapV2.NetworkInfo, error) {
p.SetKey(key)
p.SetValue(value)
ps = append(ps, &p)
ps = append(ps, p)
return nil
}); err != nil {

View file

@ -260,7 +260,7 @@ func (s *reputationServer) AnnounceLocalTrust(ctx context.Context, req *v2reputa
}
for _, trust := range body.GetTrusts() {
err = s.processLocalTrust(body.GetEpoch(), apiToLocalTrust(trust, passedRoute[0].PublicKey()), passedRoute, w)
err = s.processLocalTrust(body.GetEpoch(), apiToLocalTrust(&trust, passedRoute[0].PublicKey()), passedRoute, w)
if err != nil {
return nil, fmt.Errorf("could not write one of local trusts: %w", err)
}

View file

@ -42,7 +42,7 @@ func TestCheckFormat(t *testing.T) {
require.NoError(t, CheckFormat(c))
// set empty value attribute
attr1 := container.NewAttribute()
var attr1 container.Attribute
attr1.SetKey("attr")
attrs := container.Attributes{attr1}
@ -51,11 +51,11 @@ func TestCheckFormat(t *testing.T) {
require.ErrorIs(t, CheckFormat(c), errEmptyAttribute)
// add same key attribute
attr2 := container.NewAttribute()
var attr2 container.Attribute
attr2.SetKey(attr1.Key())
attr2.SetValue("val")
attr1.SetValue(attr2.Value())
attrs[0].SetValue(attr2.Value())
attrs = append(attrs, attr2)
@ -63,7 +63,9 @@ func TestCheckFormat(t *testing.T) {
require.ErrorIs(t, CheckFormat(c), errRepeatedAttributes)
attr2.SetKey(attr1.Key() + "smth")
attrs[1].SetKey(attr1.Key() + "smth")
c.SetAttributes(attrs)
require.NoError(t, CheckFormat(c))
}

View file

@ -119,7 +119,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.Error(t, v.ValidateContent(obj)) // no tombstone content
content := object.NewTombstone()
content.SetMembers([]*oidSDK.ID{nil})
content.SetMembers([]oidSDK.ID{*testObjectID(t)})
data, err := content.Marshal()
require.NoError(t, err)
@ -128,7 +128,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.Error(t, v.ValidateContent(obj)) // no members in tombstone
content.SetMembers([]*oidSDK.ID{testObjectID(t)})
content.SetMembers([]oidSDK.ID{*testObjectID(t)})
data, err = content.Marshal()
require.NoError(t, err)
@ -137,7 +137,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.Error(t, v.ValidateContent(obj)) // no expiration epoch in tombstone
expirationAttribute := object.NewAttribute()
var expirationAttribute object.Attribute
expirationAttribute.SetKey(objectV2.SysAttributeExpEpoch)
expirationAttribute.SetValue(strconv.Itoa(10))
@ -161,7 +161,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.Error(t, v.ValidateContent(obj))
content := storagegroup.New()
content.SetMembers([]*oidSDK.ID{nil})
content.SetMembers([]oidSDK.ID{})
data, err := content.Marshal()
require.NoError(t, err)
@ -170,7 +170,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.Error(t, v.ValidateContent(obj))
content.SetMembers([]*oidSDK.ID{testObjectID(t)})
content.SetMembers([]oidSDK.ID{*testObjectID(t)})
data, err = content.Marshal()
require.NoError(t, err)
@ -184,7 +184,7 @@ func TestFormatValidator_Validate(t *testing.T) {
fn := func(val string) *object.Object {
obj := blankValidObject(&ownerKey.PrivateKey)
a := object.NewAttribute()
var a object.Attribute
a.SetKey(objectV2.SysAttributeExpEpoch)
a.SetValue(val)
@ -218,11 +218,11 @@ func TestFormatValidator_Validate(t *testing.T) {
t.Run("duplication", func(t *testing.T) {
obj := blankValidObject(&ownerKey.PrivateKey)
a1 := object.NewAttribute()
var a1 object.Attribute
a1.SetKey("key1")
a1.SetValue("val1")
a2 := object.NewAttribute()
var a2 object.Attribute
a2.SetKey("key2")
a2.SetValue("val2")
@ -232,6 +232,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.NoError(t, err)
a2.SetKey(a1.Key())
obj.SetAttributes(a1, a2)
err = v.checkAttributes(obj)
require.Equal(t, errDuplAttr, err)
@ -240,7 +241,7 @@ func TestFormatValidator_Validate(t *testing.T) {
t.Run("empty value", func(t *testing.T) {
obj := blankValidObject(&ownerKey.PrivateKey)
a := object.NewAttribute()
var a object.Attribute
a.SetKey("key")
obj.SetAttributes(a)

View file

@ -98,7 +98,7 @@ func TestBlobstor_needsCompression(t *testing.T) {
newObjectWithCt := func(contentType string) *objectSDK.Object {
obj := testObject(smallSizeLimit + 1)
if contentType != "" {
a := objectSDK.NewAttribute()
var a objectSDK.Attribute
a.SetKey(objectSDK.AttributeContentType)
a.SetValue(contentType)
obj.SetAttributes(a)

View file

@ -171,7 +171,7 @@ func generateObjectWithCID(t testing.TB, cid *cid.ID) *object.Object {
}
func addAttribute(obj *object.Object, key, val string) {
attr := object.NewAttribute()
var attr object.Attribute
attr.SetKey(key)
attr.SetValue(val)

View file

@ -32,7 +32,7 @@ func TestHeadRaw(t *testing.T) {
link := generateObjectWithCID(t, cid)
link.SetParent(parent)
link.SetParentID(parent.ID())
link.SetChildren(child.ID())
link.SetChildren(*child.ID())
link.SetSplitID(splitID)
t.Run("virtual object split in different shards", func(t *testing.T) {

View file

@ -31,7 +31,7 @@ func TestStorageEngine_Inhume(t *testing.T) {
link := generateObjectWithCID(t, cid)
link.SetParent(parent)
link.SetParentID(parent.ID())
link.SetChildren(child.ID())
link.SetChildren(*child.ID())
link.SetSplitID(splitID)
t.Run("delete small object", func(t *testing.T) {

View file

@ -102,7 +102,7 @@ func TestLockUserScenario(t *testing.T) {
tombObj := generateObjectWithCID(t, cnr)
tombObj.SetType(object.TypeTombstone)
tombObj.SetID(tombForLockID)
tombObj.SetAttributes(&a)
tombObj.SetAttributes(a)
err = Put(e, tombObj)
require.NoError(t, err)
@ -171,7 +171,7 @@ func TestLockExpiration(t *testing.T) {
lock := generateObjectWithCID(t, cnr)
lock.SetType(object.TypeLock)
lock.SetAttributes(&a)
lock.SetAttributes(a)
err = Put(e, lock)
require.NoError(t, err)

View file

@ -97,7 +97,7 @@ func generateAddress() *addressSDK.Address {
}
func addAttribute(obj *object.Object, key, val string) {
attr := object.NewAttribute()
var attr object.Attribute
attr.SetKey(key)
attr.SetValue(val)

View file

@ -99,7 +99,7 @@ func TestDB_Exists(t *testing.T) {
link := generateObjectWithCID(t, cid)
link.SetParent(parent)
link.SetParentID(parent.ID())
link.SetChildren(child.ID())
link.SetChildren(*child.ID())
link.SetSplitID(splitID)
t.Run("direct order", func(t *testing.T) {

View file

@ -178,7 +178,7 @@ func TestDB_SelectRootPhyParent(t *testing.T) {
link := generateObjectWithCID(t, cid)
link.SetParent(parent)
link.SetParentID(parent.ID())
link.SetChildren(leftChild.ID(), rightChild.ID())
link.SetChildren(*leftChild.ID(), *rightChild.ID())
err = putBig(db, link)
require.NoError(t, err)

View file

@ -71,9 +71,10 @@ func TestRefillMetabase(t *testing.T) {
tombMembers := make([]*addressSDK.Address, 0, len(tombstone.Members()))
for _, member := range tombstone.Members() {
members := tombstone.Members()
for i := range tombstone.Members() {
a := addressSDK.NewAddress()
a.SetObjectID(member)
a.SetObjectID(&members[i])
a.SetContainerID(tombObj.ContainerID())
tombMembers = append(tombMembers, a)

View file

@ -105,7 +105,7 @@ func generateObjectWithPayload(cid *cid.ID, data []byte) *object.Object {
}
func addAttribute(obj *object.Object, key, val string) {
attr := object.NewAttribute()
var attr object.Attribute
attr.SetKey(key)
attr.SetValue(val)

View file

@ -126,9 +126,9 @@ func (s *morphExecutor) List(ctx context.Context, body *container.ListRequestBod
return nil, err
}
cidList := make([]*refs.ContainerID, 0, len(cnrs))
cidList := make([]refs.ContainerID, len(cnrs))
for i := range cnrs {
cidList = append(cidList, cnrs[i].ToV2())
cidList[i] = *cnrs[i].ToV2()
}
res := new(container.ListResponseBody)

View file

@ -51,15 +51,12 @@ func testAddress(t *testing.T) *objectSDKAddress.Address {
return addr
}
func testXHeaders(strs ...string) []*session.XHeader {
res := make([]*session.XHeader, 0, len(strs)/2)
func testXHeaders(strs ...string) []session.XHeader {
res := make([]session.XHeader, len(strs)/2)
for i := 0; i < len(strs); i += 2 {
x := new(session.XHeader)
x.SetKey(strs[i])
x.SetValue(strs[i+1])
res = append(res, x)
res[i/2].SetKey(strs[i])
res[i/2].SetValue(strs[i+1])
}
return res
@ -89,7 +86,7 @@ func TestHeadRequest(t *testing.T) {
attrKey := "attr_key"
attrVal := "attr_val"
attr := object.NewAttribute()
var attr object.Attribute
attr.SetKey(attrKey)
attr.SetValue(attrVal)
obj.SetAttributes(attr)
@ -138,7 +135,7 @@ func TestHeadRequest(t *testing.T) {
meta.SetXHeaders(xHdrs)
obj.SetAttributes(nil)
obj.SetAttributes()
require.Equal(t, eaclSDK.ActionAllow, validator.CalculateAction(unit))
}

View file

@ -75,7 +75,7 @@ func requestHeaders(msg xHeaderSource) []eaclSDK.Header {
res := make([]eaclSDK.Header, 0, len(xHdrs))
for i := range xHdrs {
res = append(res, sessionSDK.NewXHeaderFromV2(xHdrs[i]))
res = append(res, sessionSDK.NewXHeaderFromV2(&xHdrs[i]))
}
return res

View file

@ -90,7 +90,7 @@ func headersFromObject(obj *object.Object, addr *objectSDKAddress.Address) []eac
attrs := obj.Attributes()
for i := range attrs {
res = append(res, attrs[i])
res = append(res, &attrs[i]) // only pointer attrs can implement eaclSDK.Header interface
}
}

View file

@ -5,7 +5,7 @@ import (
)
type xHeaderSource interface {
GetXHeaders() []*session.XHeader
GetXHeaders() []session.XHeader
}
type requestXHeaderSource struct {
@ -18,9 +18,9 @@ type responseXHeaderSource struct {
req Request
}
func (s *requestXHeaderSource) GetXHeaders() []*session.XHeader {
func (s *requestXHeaderSource) GetXHeaders() []session.XHeader {
ln := 0
xHdrs := make([][]*session.XHeader, 0)
xHdrs := make([][]session.XHeader, 0)
for meta := s.req.GetMetaHeader(); meta != nil; meta = meta.GetOrigin() {
x := meta.GetXHeaders()
@ -30,7 +30,7 @@ func (s *requestXHeaderSource) GetXHeaders() []*session.XHeader {
xHdrs = append(xHdrs, x)
}
res := make([]*session.XHeader, 0, ln)
res := make([]session.XHeader, 0, ln)
for i := range xHdrs {
for j := range xHdrs[i] {
@ -41,9 +41,9 @@ func (s *requestXHeaderSource) GetXHeaders() []*session.XHeader {
return res
}
func (s *responseXHeaderSource) GetXHeaders() []*session.XHeader {
func (s *responseXHeaderSource) GetXHeaders() []session.XHeader {
ln := 0
xHdrs := make([][]*session.XHeader, 0)
xHdrs := make([][]session.XHeader, 0)
for meta := s.req.GetMetaHeader(); meta != nil; meta = meta.GetOrigin() {
x := meta.GetXHeaders()
@ -53,7 +53,7 @@ func (s *responseXHeaderSource) GetXHeaders() []*session.XHeader {
xHdrs = append(xHdrs, x)
}
res := make([]*session.XHeader, 0, ln)
res := make([]session.XHeader, 0, ln)
for i := range xHdrs {
for j := range xHdrs[i] {

View file

@ -124,13 +124,13 @@ func (exec *execCtx) collectMembers() (ok bool) {
func (exec *execCtx) collectChain() bool {
var (
err error
chain []*oidSDK.ID
chain []oidSDK.ID
)
exec.log.Debug("assembling chain...")
for prev := exec.splitInfo.LastPart(); prev != nil; {
chain = append(chain, prev)
chain = append(chain, *prev)
prev, err = exec.svc.header.previous(exec, prev)
switch {
@ -174,7 +174,7 @@ func (exec *execCtx) collectChildren() bool {
exec.status = statusOK
exec.err = nil
exec.addMembers(append(children, exec.splitInfo.Link()))
exec.addMembers(append(children, *exec.splitInfo.Link()))
return true
}
@ -205,12 +205,12 @@ func (exec *execCtx) supplementBySplitID() bool {
}
}
func (exec *execCtx) addMembers(incoming []*oidSDK.ID) {
func (exec *execCtx) addMembers(incoming []oidSDK.ID) {
members := exec.tombstone.Members()
for i := range members {
for j := 0; j < len(incoming); j++ { // don't use range, slice mutates in body
if members[i].Equal(incoming[j]) {
if members[i].Equal(&incoming[j]) {
incoming = append(incoming[:j], incoming[j+1:]...)
j--
}
@ -245,7 +245,7 @@ func (exec *execCtx) initTombstoneObject() bool {
exec.tombstoneObj.SetType(object.TypeTombstone)
exec.tombstoneObj.SetPayload(payload)
a := object.NewAttribute()
var a object.Attribute
a.SetKey(objectV2.SysAttributeExpEpoch)
a.SetValue(strconv.FormatUint(exec.tombstone.ExpirationEpoch(), 10))

View file

@ -36,7 +36,7 @@ func (exec *execCtx) formTombstone() (ok bool) {
exec.tombstone.SetExpirationEpoch(
exec.svc.netInfo.CurrentEpoch() + tsLifetime,
)
exec.addMembers([]*oidSDK.ID{exec.address().ObjectID()})
exec.addMembers([]oidSDK.ID{*exec.address().ObjectID()})
exec.log.Debug("forming split info...")

View file

@ -40,14 +40,14 @@ type cfg struct {
// must return (nil, nil) for PHY objects
splitInfo(*execCtx) (*object.SplitInfo, error)
children(*execCtx) ([]*oidSDK.ID, error)
children(*execCtx) ([]oidSDK.ID, error)
// must return (nil, nil) for 1st object in chain
previous(*execCtx, *oidSDK.ID) (*oidSDK.ID, error)
}
searcher interface {
splitMembers(*execCtx) ([]*oidSDK.ID, error)
splitMembers(*execCtx) ([]oidSDK.ID, error)
}
placer interface {

View file

@ -18,7 +18,7 @@ type searchSvcWrapper searchsvc.Service
type putSvcWrapper putsvc.Service
type simpleIDWriter struct {
ids []*oidSDK.ID
ids []oidSDK.ID
}
func (w *headSvcWrapper) headAddress(exec *execCtx, addr *addressSDK.Address) (*object.Object, error) {
@ -53,7 +53,7 @@ func (w *headSvcWrapper) splitInfo(exec *execCtx) (*object.SplitInfo, error) {
}
}
func (w *headSvcWrapper) children(exec *execCtx) ([]*oidSDK.ID, error) {
func (w *headSvcWrapper) children(exec *execCtx) ([]oidSDK.ID, error) {
a := exec.newAddress(exec.splitInfo.Link())
linking, err := w.headAddress(exec, a)
@ -75,7 +75,7 @@ func (w *headSvcWrapper) previous(exec *execCtx, id *oidSDK.ID) (*oidSDK.ID, err
return h.PreviousID(), nil
}
func (w *searchSvcWrapper) splitMembers(exec *execCtx) ([]*oidSDK.ID, error) {
func (w *searchSvcWrapper) splitMembers(exec *execCtx) ([]oidSDK.ID, error) {
fs := object.SearchFilters{}
fs.AddSplitIDFilter(object.MatchStringEqual, exec.splitInfo.SplitID())
@ -95,7 +95,7 @@ func (w *searchSvcWrapper) splitMembers(exec *execCtx) ([]*oidSDK.ID, error) {
return wr.ids, nil
}
func (s *simpleIDWriter) WriteIDs(ids []*oidSDK.ID) error {
func (s *simpleIDWriter) WriteIDs(ids []oidSDK.ID) error {
s.ids = append(s.ids, ids...)
return nil

View file

@ -40,7 +40,7 @@ func (exec *execCtx) assemble() {
// * if size > MAX => go right-to-left with HEAD and back with GET
// * else go right-to-left with GET and compose in single object before writing
if ok := exec.overtakePayloadInReverse(children[len(children)-1]); ok {
if ok := exec.overtakePayloadInReverse(&children[len(children)-1]); ok {
// payload of all children except the last are written, write last payload
exec.writeObjectPayload(exec.collectedObject)
}
@ -61,7 +61,7 @@ func (exec *execCtx) assemble() {
}
}
func (exec *execCtx) initFromChild(id *oidSDK.ID) (prev *oidSDK.ID, children []*oidSDK.ID) {
func (exec *execCtx) initFromChild(id *oidSDK.ID) (prev *oidSDK.ID, children []oidSDK.ID) {
log := exec.log.With(zap.Stringer("child ID", id))
log.Debug("starting assembling from child")
@ -120,16 +120,16 @@ func (exec *execCtx) initFromChild(id *oidSDK.ID) (prev *oidSDK.ID, children []*
return child.PreviousID(), child.Children()
}
func (exec *execCtx) overtakePayloadDirectly(children []*oidSDK.ID, rngs []*objectSDK.Range, checkRight bool) {
func (exec *execCtx) overtakePayloadDirectly(children []oidSDK.ID, rngs []objectSDK.Range, checkRight bool) {
withRng := len(rngs) > 0 && exec.ctxRange() != nil
for i := range children {
var r *objectSDK.Range
if withRng {
r = rngs[i]
r = &rngs[i]
}
child, ok := exec.getChild(children[i], r, !withRng && checkRight)
child, ok := exec.getChild(&children[i], r, !withRng && checkRight)
if !ok {
return
}
@ -165,10 +165,10 @@ func (exec *execCtx) overtakePayloadInReverse(prev *oidSDK.ID) bool {
return exec.status == statusOK
}
func (exec *execCtx) buildChainInReverse(prev *oidSDK.ID) ([]*oidSDK.ID, []*objectSDK.Range, bool) {
func (exec *execCtx) buildChainInReverse(prev *oidSDK.ID) ([]oidSDK.ID, []objectSDK.Range, bool) {
var (
chain = make([]*oidSDK.ID, 0)
rngs = make([]*objectSDK.Range, 0)
chain = make([]oidSDK.ID, 0)
rngs = make([]objectSDK.Range, 0)
seekRng = exec.ctxRange()
from = seekRng.GetOffset()
to = from + seekRng.GetLength()
@ -201,15 +201,15 @@ func (exec *execCtx) buildChainInReverse(prev *oidSDK.ID) ([]*oidSDK.ID, []*obje
sz = to - off - exec.curOff
}
r := objectSDK.NewRange()
r.SetOffset(off)
r.SetLength(sz)
index := len(rngs)
rngs = append(rngs, objectSDK.Range{})
rngs[index].SetOffset(off)
rngs[index].SetLength(sz)
rngs = append(rngs, r)
chain = append(chain, head.ID())
chain = append(chain, *head.ID())
}
} else {
chain = append(chain, head.ID())
chain = append(chain, *head.ID())
}
prev = head.PreviousID()

View file

@ -37,7 +37,7 @@ func (s *Service) GetRangeHash(ctx context.Context, prm RangeHashPrm) (*RangeHas
commonPrm: prm.commonPrm,
}
rngPrm.SetRange(rng)
rngPrm.SetRange(&rng)
rngPrm.SetChunkWriter(&hasherWrapper{
hash: util.NewSaltingWriter(h, prm.salt),
})

View file

@ -194,7 +194,7 @@ func generateAddress() *addressSDK.Address {
return addr
}
func generateObject(addr *addressSDK.Address, prev *oidSDK.ID, payload []byte, children ...*oidSDK.ID) *objectSDK.Object {
func generateObject(addr *addressSDK.Address, prev *oidSDK.ID, payload []byte, children ...oidSDK.ID) *objectSDK.Object {
obj := objectSDK.New()
obj.SetContainerID(addr.ContainerID())
obj.SetID(addr.ObjectID())
@ -427,7 +427,7 @@ func testNodeMatrix(t testing.TB, dim []int) ([]netmap.Nodes, [][]string) {
return mNodes, mAddr
}
func generateChain(ln int, cid *cid.ID) ([]*objectSDK.Object, []*oidSDK.ID, []byte) {
func generateChain(ln int, cid *cid.ID) ([]*objectSDK.Object, []oidSDK.ID, []byte) {
curID := generateID()
var prevID *oidSDK.ID
@ -435,11 +435,11 @@ func generateChain(ln int, cid *cid.ID) ([]*objectSDK.Object, []*oidSDK.ID, []by
addr.SetContainerID(cid)
res := make([]*objectSDK.Object, 0, ln)
ids := make([]*oidSDK.ID, 0, ln)
ids := make([]oidSDK.ID, 0, ln)
payload := make([]byte, 0, ln*10)
for i := 0; i < ln; i++ {
ids = append(ids, curID)
ids = append(ids, *curID)
addr.SetObjectID(curID)
payloadPart := make([]byte, 10)
@ -760,11 +760,11 @@ func TestGetRemoteSmall(t *testing.T) {
child1Addr := addressSDK.NewAddress()
child1Addr.SetContainerID(cid)
child1Addr.SetObjectID(childIDs[0])
child1Addr.SetObjectID(&childIDs[0])
child2Addr := addressSDK.NewAddress()
child2Addr.SetContainerID(cid)
child2Addr.SetObjectID(childIDs[1])
child2Addr.SetObjectID(&childIDs[1])
c1 := newTestClient()
c1.addResult(addr, nil, errors.New("any error"))
@ -836,11 +836,11 @@ func TestGetRemoteSmall(t *testing.T) {
child1Addr := addressSDK.NewAddress()
child1Addr.SetContainerID(cid)
child1Addr.SetObjectID(childIDs[0])
child1Addr.SetObjectID(&childIDs[0])
child2Addr := addressSDK.NewAddress()
child2Addr.SetContainerID(cid)
child2Addr.SetObjectID(childIDs[1])
child2Addr.SetObjectID(&childIDs[1])
c1 := newTestClient()
c1.addResult(addr, nil, errors.New("any error"))

View file

@ -27,7 +27,7 @@ type RangeHashPrm struct {
hashGen func() hash.Hash
rngs []*object.Range
rngs []object.Range
salt []byte
}
@ -87,7 +87,7 @@ func (p *RangePrm) SetRange(rng *object.Range) {
}
// SetRangeList sets list of object payload ranges.
func (p *RangeHashPrm) SetRangeList(rngs []*object.Range) {
func (p *RangeHashPrm) SetRangeList(rngs []object.Range) {
p.rngs = rngs
}

View file

@ -275,10 +275,10 @@ func (s *Service) toHashRangePrm(req *objectV2.GetRangeHashRequest) (*getsvc.Ran
p.WithAddress(addressSDK.NewAddressFromV2(body.GetAddress()))
rngsV2 := body.GetRanges()
rngs := make([]*object.Range, 0, len(rngsV2))
rngs := make([]object.Range, len(rngsV2))
for i := range rngsV2 {
rngs = append(rngs, object.NewRangeFromV2(rngsV2[i]))
rngs[i] = *object.NewRangeFromV2(&rngsV2[i])
}
p.SetRangeList(rngs)

View file

@ -474,11 +474,11 @@ func (x *SearchObjectsPrm) SetFilters(fs object.SearchFilters) {
// SearchObjectsRes groups resulting values of SearchObjects operation.
type SearchObjectsRes struct {
ids []*oidSDK.ID
ids []oidSDK.ID
}
// IDList returns identifiers of the matched objects.
func (x SearchObjectsRes) IDList() []*oidSDK.ID {
func (x SearchObjectsRes) IDList() []oidSDK.ID {
return x.ids
}
@ -510,7 +510,7 @@ func SearchObjects(prm SearchObjectsPrm) (*SearchObjectsRes, error) {
}
buf := make([]oidSDK.ID, 10)
var ids []*oidSDK.ID
var ids []oidSDK.ID
var n int
var ok bool
@ -519,7 +519,7 @@ func SearchObjects(prm SearchObjectsPrm) (*SearchObjectsRes, error) {
if n > 0 {
for i := range buf[:n] {
v := buf[i]
ids = append(ids, &v)
ids = append(ids, v)
}
}

View file

@ -133,7 +133,7 @@ func (exec execCtx) remoteClient(info client.NodeInfo) (searchClient, bool) {
return nil, false
}
func (exec *execCtx) writeIDList(ids []*oidSDK.ID) {
func (exec *execCtx) writeIDList(ids []oidSDK.ID) {
err := exec.prm.writer.WriteIDs(ids)
switch {

View file

@ -24,12 +24,12 @@ type Prm struct {
// IDListWriter is an interface of target component
// to write list of object identifiers.
type IDListWriter interface {
WriteIDs([]*oidSDK.ID) error
WriteIDs([]oidSDK.ID) error
}
// RequestForwarder is a callback for forwarding of the
// original Search requests.
type RequestForwarder func(coreclient.NodeInfo, coreclient.MultiAddressClient) ([]*oidSDK.ID, error)
type RequestForwarder func(coreclient.NodeInfo, coreclient.MultiAddressClient) ([]oidSDK.ID, error)
// SetCommonParameters sets common parameters of the operation.
func (p *Prm) SetCommonParameters(common *util.CommonPrm) {

View file

@ -24,7 +24,7 @@ import (
)
type idsErr struct {
ids []*oidSDK.ID
ids []oidSDK.ID
err error
}
@ -46,7 +46,7 @@ type testClientCache struct {
}
type simpleIDWriter struct {
ids []*oidSDK.ID
ids []oidSDK.ID
}
type testEpochReceiver uint64
@ -55,7 +55,7 @@ func (e testEpochReceiver) currentEpoch() (uint64, error) {
return uint64(e), nil
}
func (s *simpleIDWriter) WriteIDs(ids []*oidSDK.ID) error {
func (s *simpleIDWriter) WriteIDs(ids []oidSDK.ID) error {
s.ids = append(s.ids, ids...)
return nil
}
@ -95,7 +95,7 @@ func (c *testClientCache) get(info clientcore.NodeInfo) (searchClient, error) {
return v, nil
}
func (s *testStorage) search(exec *execCtx) ([]*oidSDK.ID, error) {
func (s *testStorage) search(exec *execCtx) ([]oidSDK.ID, error) {
v, ok := s.items[exec.containerID().String()]
if !ok {
return nil, nil
@ -104,7 +104,7 @@ func (s *testStorage) search(exec *execCtx) ([]*oidSDK.ID, error) {
return v.ids, v.err
}
func (c *testStorage) searchObjects(exec *execCtx, _ clientcore.NodeInfo) ([]*oidSDK.ID, error) {
func (c *testStorage) searchObjects(exec *execCtx, _ clientcore.NodeInfo) ([]oidSDK.ID, error) {
v, ok := c.items[exec.containerID().String()]
if !ok {
return nil, nil
@ -113,7 +113,7 @@ func (c *testStorage) searchObjects(exec *execCtx, _ clientcore.NodeInfo) ([]*oi
return v.ids, v.err
}
func (c *testStorage) addResult(addr *cid.ID, ids []*oidSDK.ID, err error) {
func (c *testStorage) addResult(addr *cid.ID, ids []oidSDK.ID, err error) {
c.items[addr.String()] = idsErr{
ids: ids,
err: err,
@ -125,11 +125,10 @@ func testSHA256() (cs [sha256.Size]byte) {
return cs
}
func generateIDs(num int) []*oidSDK.ID {
res := make([]*oidSDK.ID, num)
func generateIDs(num int) []oidSDK.ID {
res := make([]oidSDK.ID, num)
for i := 0; i < num; i++ {
res[i] = oidSDK.NewID()
res[i].SetSHA256(testSHA256())
}
@ -227,12 +226,9 @@ func TestGetRemoteSmall(t *testing.T) {
placementDim := []int{2}
rs := make([]*netmap.Replica, 0, len(placementDim))
rs := make([]netmap.Replica, len(placementDim))
for i := range placementDim {
r := netmap.NewReplica()
r.SetCount(uint32(placementDim[i]))
rs = append(rs, r)
rs[i].SetCount(uint32(placementDim[i]))
}
pp := netmap.NewPlacementPolicy()
@ -315,13 +311,10 @@ func TestGetFromPastEpoch(t *testing.T) {
placementDim := []int{2, 2}
rs := make([]*netmap.Replica, 0, len(placementDim))
rs := make([]netmap.Replica, len(placementDim))
for i := range placementDim {
r := netmap.NewReplica()
r.SetCount(uint32(placementDim[i]))
rs = append(rs, r)
rs[i].SetCount(uint32(placementDim[i]))
}
pp := netmap.NewPlacementPolicy()
@ -393,7 +386,7 @@ func TestGetFromPastEpoch(t *testing.T) {
commonPrm := new(util.CommonPrm)
p.SetCommonParameters(commonPrm)
assertContains := func(idsList ...[]*oidSDK.ID) {
assertContains := func(idsList ...[]oidSDK.ID) {
var sz int
for _, ids := range idsList {

View file

@ -25,7 +25,7 @@ type Service struct {
type Option func(*cfg)
type searchClient interface {
searchObjects(*execCtx, client.NodeInfo) ([]*oidSDK.ID, error)
searchObjects(*execCtx, client.NodeInfo) ([]oidSDK.ID, error)
}
type ClientConstructor interface {
@ -36,7 +36,7 @@ type cfg struct {
log *logger.Logger
localStorage interface {
search(*execCtx) ([]*oidSDK.ID, error)
search(*execCtx) ([]oidSDK.ID, error)
}
clientConstructor interface {

View file

@ -45,7 +45,7 @@ func newUniqueAddressWriter(w IDListWriter) IDListWriter {
}
}
func (w *uniqueIDWriter) WriteIDs(list []*oidSDK.ID) error {
func (w *uniqueIDWriter) WriteIDs(list []oidSDK.ID) error {
w.mtx.Lock()
for i := 0; i < len(list); i++ { // don't use range, slice mutates in body
@ -80,7 +80,7 @@ func (c *clientConstructorWrapper) get(info client.NodeInfo) (searchClient, erro
}, nil
}
func (c *clientWrapper) searchObjects(exec *execCtx, info client.NodeInfo) ([]*oidSDK.ID, error) {
func (c *clientWrapper) searchObjects(exec *execCtx, info client.NodeInfo) ([]oidSDK.ID, error) {
if exec.prm.forwarder != nil {
return exec.prm.forwarder(info, c.client)
}
@ -111,7 +111,7 @@ func (c *clientWrapper) searchObjects(exec *execCtx, info client.NodeInfo) ([]*o
return res.IDList(), nil
}
func (e *storageEngineWrapper) search(exec *execCtx) ([]*oidSDK.ID, error) {
func (e *storageEngineWrapper) search(exec *execCtx) ([]oidSDK.ID, error) {
r, err := (*engine.StorageEngine)(e).Select(new(engine.SelectPrm).
WithFilters(exec.searchFilters()).
WithContainerID(exec.containerID()),
@ -123,11 +123,11 @@ func (e *storageEngineWrapper) search(exec *execCtx) ([]*oidSDK.ID, error) {
return idsFromAddresses(r.AddressList()), nil
}
func idsFromAddresses(addrs []*addressSDK.Address) []*oidSDK.ID {
ids := make([]*oidSDK.ID, len(addrs))
func idsFromAddresses(addrs []*addressSDK.Address) []oidSDK.ID {
ids := make([]oidSDK.ID, len(addrs))
for i := range addrs {
ids[i] = addrs[i].ObjectID()
ids[i] = *addrs[i].ObjectID()
}
return ids

View file

@ -11,16 +11,16 @@ type streamWriter struct {
stream objectSvc.SearchStream
}
func (s *streamWriter) WriteIDs(ids []*oidSDK.ID) error {
func (s *streamWriter) WriteIDs(ids []oidSDK.ID) error {
r := new(object.SearchResponse)
body := new(object.SearchResponseBody)
r.SetBody(body)
idsV2 := make([]*refs.ObjectID, len(ids))
idsV2 := make([]refs.ObjectID, len(ids))
for i := range ids {
idsV2[i] = ids[i].ToV2()
idsV2[i] = *ids[i].ToV2()
}
body.SetIDList(idsV2)

View file

@ -45,7 +45,7 @@ func (s *Service) toPrm(req *objectV2.SearchRequest, stream objectSvc.SearchStre
return nil, err
}
p.SetRequestForwarder(groupAddressRequestForwarder(func(addr network.Address, c client.MultiAddressClient, pubkey []byte) ([]*oidSDK.ID, error) {
p.SetRequestForwarder(groupAddressRequestForwarder(func(addr network.Address, c client.MultiAddressClient, pubkey []byte) ([]oidSDK.ID, error) {
var err error
// once compose and resign forwarding request
@ -77,7 +77,7 @@ func (s *Service) toPrm(req *objectV2.SearchRequest, stream objectSvc.SearchStre
// code below is copy-pasted from c.SearchObjects implementation,
// perhaps it is worth highlighting the utility function in neofs-api-go
var (
searchResult []*oidSDK.ID
searchResult []oidSDK.ID
resp = new(objectV2.SearchResponse)
)
@ -104,7 +104,7 @@ func (s *Service) toPrm(req *objectV2.SearchRequest, stream objectSvc.SearchStre
chunk := resp.GetBody().GetIDList()
for i := range chunk {
searchResult = append(searchResult, oidSDK.NewIDFromV2(chunk[i]))
searchResult = append(searchResult, *oidSDK.NewIDFromV2(&chunk[i]))
}
}
@ -119,11 +119,11 @@ func (s *Service) toPrm(req *objectV2.SearchRequest, stream objectSvc.SearchStre
return p, nil
}
func groupAddressRequestForwarder(f func(network.Address, client.MultiAddressClient, []byte) ([]*oidSDK.ID, error)) searchsvc.RequestForwarder {
return func(info client.NodeInfo, c client.MultiAddressClient) ([]*oidSDK.ID, error) {
func groupAddressRequestForwarder(f func(network.Address, client.MultiAddressClient, []byte) ([]oidSDK.ID, error)) searchsvc.RequestForwarder {
return func(info client.NodeInfo, c client.MultiAddressClient) ([]oidSDK.ID, error) {
var (
firstErr error
res []*oidSDK.ID
res []oidSDK.ID
key = info.PublicKey()
)

View file

@ -40,7 +40,7 @@ func copyVectors(v []netmap.Nodes) []netmap.Nodes {
func testPlacement(t *testing.T, ss, rs []int) ([]netmap.Nodes, *container.Container) {
nodes := make([]netmap.Nodes, 0, len(rs))
replicas := make([]*netmap.Replica, 0, len(rs))
replicas := make([]netmap.Replica, 0, len(rs))
num := uint32(0)
for i := range ss {
@ -53,7 +53,7 @@ func testPlacement(t *testing.T, ss, rs []int) ([]netmap.Nodes, *container.Conta
nodes = append(nodes, netmap.NodesFromInfo(ns))
s := new(netmap.Replica)
var s netmap.Replica
s.SetCount(uint32(rs[i]))
replicas = append(replicas, s)

View file

@ -23,13 +23,13 @@ type payloadSizeLimiter struct {
currentHashers, parentHashers []*payloadChecksumHasher
previous []*oidSDK.ID
previous []oidSDK.ID
chunkWriter io.Writer
splitID *object.SplitID
parAttrs []*object.Attribute
parAttrs []object.Attribute
}
type payloadChecksumHasher struct {
@ -79,7 +79,7 @@ func (s *payloadSizeLimiter) initialize() {
}
// set previous object to the last previous identifier
s.current.SetPreviousID(s.previous[ln-1])
s.current.SetPreviousID(&s.previous[ln-1])
}
s.initializeCurrent()
@ -187,7 +187,7 @@ func (s *payloadSizeLimiter) release(close bool) (*AccessIdentifiers, error) {
}
// save identifier of the released object
s.previous = append(s.previous, ids.SelfID())
s.previous = append(s.previous, *ids.SelfID())
if withParent {
// generate and release linking object

View file

@ -21,7 +21,7 @@ var (
// ParseV2Attributes parses strings like "K1:V1/K2:V2/K3:V3" into netmap
// attributes. Supports escaped symbols "\:", "\/" and "\\".
func ParseV2Attributes(attrs []string, excl []string) ([]*netmap.NodeAttribute, error) {
func ParseV2Attributes(attrs []string, excl []string) ([]netmap.NodeAttribute, error) {
restricted := make(map[string]struct{}, len(excl))
for i := range excl {
restricted[excl[i]] = struct{}{}
@ -82,7 +82,12 @@ func ParseV2Attributes(attrs []string, excl []string) ([]*netmap.NodeAttribute,
}
}
return result, nil
nresult := make([]netmap.NodeAttribute, len(result))
for i := range result {
nresult[i] = *result[i]
}
return nresult, nil
}
func replaceEscaping(target string, rollback bool) (s string) {