[#376] netmap: Replace slices of pointers with structs

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
Evgenii Stratonikov 2022-03-01 16:41:42 +03:00 committed by Alex Vanin
parent ec484f2fd2
commit 2f0eee96fc
4 changed files with 57 additions and 81 deletions

View file

@ -45,7 +45,7 @@ func (f *Filter) FromGRPCMessage(m grpc.Message) error {
return nil return nil
} }
func FiltersToGRPC(fs []*Filter) (res []*netmap.Filter) { func FiltersToGRPC(fs []Filter) (res []*netmap.Filter) {
if fs != nil { if fs != nil {
res = make([]*netmap.Filter, 0, len(fs)) res = make([]*netmap.Filter, 0, len(fs))
@ -57,23 +57,17 @@ func FiltersToGRPC(fs []*Filter) (res []*netmap.Filter) {
return return
} }
func FiltersFromGRPC(fs []*netmap.Filter) (res []*Filter, err error) { func FiltersFromGRPC(fs []*netmap.Filter) (res []Filter, err error) {
if fs != nil { if fs != nil {
res = make([]*Filter, 0, len(fs)) res = make([]Filter, len(fs))
for i := range fs { for i := range fs {
var f *Filter
if fs[i] != nil { if fs[i] != nil {
f = new(Filter) err = res[i].FromGRPCMessage(fs[i])
err = f.FromGRPCMessage(fs[i])
if err != nil { if err != nil {
return return
} }
} }
res = append(res, f)
} }
} }
@ -111,7 +105,7 @@ func (s *Selector) FromGRPCMessage(m grpc.Message) error {
return nil return nil
} }
func SelectorsToGRPC(ss []*Selector) (res []*netmap.Selector) { func SelectorsToGRPC(ss []Selector) (res []*netmap.Selector) {
if ss != nil { if ss != nil {
res = make([]*netmap.Selector, 0, len(ss)) res = make([]*netmap.Selector, 0, len(ss))
@ -123,23 +117,17 @@ func SelectorsToGRPC(ss []*Selector) (res []*netmap.Selector) {
return return
} }
func SelectorsFromGRPC(ss []*netmap.Selector) (res []*Selector, err error) { func SelectorsFromGRPC(ss []*netmap.Selector) (res []Selector, err error) {
if ss != nil { if ss != nil {
res = make([]*Selector, 0, len(ss)) res = make([]Selector, len(ss))
for i := range ss { for i := range ss {
var s *Selector
if ss[i] != nil { if ss[i] != nil {
s = new(Selector) err = res[i].FromGRPCMessage(ss[i])
err = s.FromGRPCMessage(ss[i])
if err != nil { if err != nil {
return return
} }
} }
res = append(res, s)
} }
} }
@ -171,7 +159,7 @@ func (r *Replica) FromGRPCMessage(m grpc.Message) error {
return nil return nil
} }
func ReplicasToGRPC(rs []*Replica) (res []*netmap.Replica) { func ReplicasToGRPC(rs []Replica) (res []*netmap.Replica) {
if rs != nil { if rs != nil {
res = make([]*netmap.Replica, 0, len(rs)) res = make([]*netmap.Replica, 0, len(rs))
@ -183,23 +171,17 @@ func ReplicasToGRPC(rs []*Replica) (res []*netmap.Replica) {
return return
} }
func ReplicasFromGRPC(rs []*netmap.Replica) (res []*Replica, err error) { func ReplicasFromGRPC(rs []*netmap.Replica) (res []Replica, err error) {
if rs != nil { if rs != nil {
res = make([]*Replica, 0, len(rs)) res = make([]Replica, len(rs))
for i := range rs { for i := range rs {
var r *Replica
if rs[i] != nil { if rs[i] != nil {
r = new(Replica) err = res[i].FromGRPCMessage(rs[i])
err = r.FromGRPCMessage(rs[i])
if err != nil { if err != nil {
return return
} }
} }
res = append(res, r)
} }
} }
@ -583,27 +565,21 @@ func (x *NetworkConfig) FromGRPCMessage(m grpc.Message) error {
} }
var ( var (
ps []*NetworkParameter ps []NetworkParameter
psV2 = v.GetParameters() psV2 = v.GetParameters()
) )
if psV2 != nil { if psV2 != nil {
ln := len(psV2) ln := len(psV2)
ps = make([]*NetworkParameter, 0, ln) ps = make([]NetworkParameter, ln)
for i := 0; i < ln; i++ { for i := 0; i < ln; i++ {
var p *NetworkParameter
if psV2[i] != nil { if psV2[i] != nil {
p = new(NetworkParameter) if err := ps[i].FromGRPCMessage(psV2[i]); err != nil {
if err := p.FromGRPCMessage(psV2[i]); err != nil {
return err return err
} }
} }
ps = append(ps, p)
} }
} }

View file

@ -84,7 +84,7 @@ func (f *Filter) StableMarshal(buf []byte) ([]byte, error) {
offset += n offset += n
for i := range f.filters { for i := range f.filters {
n, err = protoutil.NestedStructureMarshal(filtersFilterField, buf[offset:], f.filters[i]) n, err = protoutil.NestedStructureMarshal(filtersFilterField, buf[offset:], &f.filters[i])
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -101,7 +101,7 @@ func (f *Filter) StableSize() (size int) {
size += protoutil.EnumSize(opFilterField, int32(f.op)) size += protoutil.EnumSize(opFilterField, int32(f.op))
size += protoutil.StringSize(valueFilterField, f.value) size += protoutil.StringSize(valueFilterField, f.value)
for i := range f.filters { for i := range f.filters {
size += protoutil.NestedStructureSize(filtersFilterField, f.filters[i]) size += protoutil.NestedStructureSize(filtersFilterField, &f.filters[i])
} }
return size return size
@ -230,7 +230,7 @@ func (p *PlacementPolicy) StableMarshal(buf []byte) ([]byte, error) {
) )
for i := range p.replicas { for i := range p.replicas {
n, err = protoutil.NestedStructureMarshal(replicasPolicyField, buf[offset:], p.replicas[i]) n, err = protoutil.NestedStructureMarshal(replicasPolicyField, buf[offset:], &p.replicas[i])
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -246,7 +246,7 @@ func (p *PlacementPolicy) StableMarshal(buf []byte) ([]byte, error) {
offset += n offset += n
for i := range p.selectors { for i := range p.selectors {
n, err = protoutil.NestedStructureMarshal(selectorsPolicyField, buf[offset:], p.selectors[i]) n, err = protoutil.NestedStructureMarshal(selectorsPolicyField, buf[offset:], &p.selectors[i])
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -255,7 +255,7 @@ func (p *PlacementPolicy) StableMarshal(buf []byte) ([]byte, error) {
} }
for i := range p.filters { for i := range p.filters {
n, err = protoutil.NestedStructureMarshal(filtersPolicyField, buf[offset:], p.filters[i]) n, err = protoutil.NestedStructureMarshal(filtersPolicyField, buf[offset:], &p.filters[i])
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -273,17 +273,17 @@ func (p *PlacementPolicy) StableMarshal(buf []byte) ([]byte, error) {
func (p *PlacementPolicy) StableSize() (size int) { func (p *PlacementPolicy) StableSize() (size int) {
for i := range p.replicas { for i := range p.replicas {
size += protoutil.NestedStructureSize(replicasPolicyField, p.replicas[i]) size += protoutil.NestedStructureSize(replicasPolicyField, &p.replicas[i])
} }
size += protoutil.UInt32Size(backupPolicyField, p.backupFactor) size += protoutil.UInt32Size(backupPolicyField, p.backupFactor)
for i := range p.selectors { for i := range p.selectors {
size += protoutil.NestedStructureSize(selectorsPolicyField, p.selectors[i]) size += protoutil.NestedStructureSize(selectorsPolicyField, &p.selectors[i])
} }
for i := range p.filters { for i := range p.filters {
size += protoutil.NestedStructureSize(filtersPolicyField, p.filters[i]) size += protoutil.NestedStructureSize(filtersPolicyField, &p.filters[i])
} }
size += protoutil.NestedStructureSize(subnetIDPolicyField, p.subnetID) size += protoutil.NestedStructureSize(subnetIDPolicyField, p.subnetID)
@ -542,7 +542,7 @@ func (x *NetworkConfig) StableMarshal(buf []byte) ([]byte, error) {
) )
for i := range x.ps { for i := range x.ps {
n, err = protoutil.NestedStructureMarshal(netCfgPrmsFNum, buf[offset:], x.ps[i]) n, err = protoutil.NestedStructureMarshal(netCfgPrmsFNum, buf[offset:], &x.ps[i])
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -559,7 +559,7 @@ func (x *NetworkConfig) StableSize() (size int) {
} }
for i := range x.ps { for i := range x.ps {
size += protoutil.NestedStructureSize(netCfgPrmsFNum, x.ps[i]) size += protoutil.NestedStructureSize(netCfgPrmsFNum, &x.ps[i])
} }
return size return size

View file

@ -20,9 +20,9 @@ func generateFilter(empty, withSub bool) *netmap.Filter {
m.SetOp(1) m.SetOp(1)
if withSub { if withSub {
m.SetFilters([]*netmap.Filter{ m.SetFilters([]netmap.Filter{
generateFilter(empty, false), *generateFilter(empty, false),
generateFilter(empty, false), *generateFilter(empty, false),
}) })
} }
} }
@ -30,13 +30,13 @@ func generateFilter(empty, withSub bool) *netmap.Filter {
return m return m
} }
func GenerateFilters(empty bool) []*netmap.Filter { func GenerateFilters(empty bool) []netmap.Filter {
var res []*netmap.Filter var res []netmap.Filter
if !empty { if !empty {
res = append(res, res = append(res,
GenerateFilter(false), *GenerateFilter(false),
GenerateFilter(false), *GenerateFilter(false),
) )
} }
@ -57,13 +57,13 @@ func GenerateSelector(empty bool) *netmap.Selector {
return m return m
} }
func GenerateSelectors(empty bool) []*netmap.Selector { func GenerateSelectors(empty bool) []netmap.Selector {
var res []*netmap.Selector var res []netmap.Selector
if !empty { if !empty {
res = append(res, res = append(res,
GenerateSelector(false), *GenerateSelector(false),
GenerateSelector(false), *GenerateSelector(false),
) )
} }
@ -81,13 +81,13 @@ func GenerateReplica(empty bool) *netmap.Replica {
return m return m
} }
func GenerateReplicas(empty bool) []*netmap.Replica { func GenerateReplicas(empty bool) []netmap.Replica {
var res []*netmap.Replica var res []netmap.Replica
if !empty { if !empty {
res = append(res, res = append(res,
GenerateReplica(false), *GenerateReplica(false),
GenerateReplica(false), *GenerateReplica(false),
) )
} }
@ -205,8 +205,8 @@ func GenerateNetworkConfig(empty bool) *netmap.NetworkConfig {
if !empty { if !empty {
m.SetParameters( m.SetParameters(
GenerateNetworkParameter(empty), *GenerateNetworkParameter(empty),
GenerateNetworkParameter(empty), *GenerateNetworkParameter(empty),
) )
} }

View file

@ -36,7 +36,7 @@ type Filter struct {
key string key string
op Operation op Operation
value string value string
filters []*Filter filters []Filter
} }
type Selector struct { type Selector struct {
@ -55,10 +55,10 @@ type Replica struct {
type Operation uint32 type Operation uint32
type PlacementPolicy struct { type PlacementPolicy struct {
replicas []*Replica replicas []Replica
backupFactor uint32 backupFactor uint32
selectors []*Selector selectors []Selector
filters []*Filter filters []Filter
subnetID *refs.SubnetID subnetID *refs.SubnetID
} }
@ -114,7 +114,7 @@ const (
Distinct Distinct
) )
func (f *Filter) GetFilters() []*Filter { func (f *Filter) GetFilters() []Filter {
if f != nil { if f != nil {
return f.filters return f.filters
} }
@ -122,7 +122,7 @@ func (f *Filter) GetFilters() []*Filter {
return nil return nil
} }
func (f *Filter) SetFilters(filters []*Filter) { func (f *Filter) SetFilters(filters []Filter) {
if f != nil { if f != nil {
f.filters = filters f.filters = filters
} }
@ -281,7 +281,7 @@ func (r *Replica) SetCount(count uint32) {
} }
} }
func (p *PlacementPolicy) GetFilters() []*Filter { func (p *PlacementPolicy) GetFilters() []Filter {
if p != nil { if p != nil {
return p.filters return p.filters
} }
@ -289,13 +289,13 @@ func (p *PlacementPolicy) GetFilters() []*Filter {
return nil return nil
} }
func (p *PlacementPolicy) SetFilters(filters []*Filter) { func (p *PlacementPolicy) SetFilters(filters []Filter) {
if p != nil { if p != nil {
p.filters = filters p.filters = filters
} }
} }
func (p *PlacementPolicy) GetSelectors() []*Selector { func (p *PlacementPolicy) GetSelectors() []Selector {
if p != nil { if p != nil {
return p.selectors return p.selectors
} }
@ -303,7 +303,7 @@ func (p *PlacementPolicy) GetSelectors() []*Selector {
return nil return nil
} }
func (p *PlacementPolicy) SetSelectors(selectors []*Selector) { func (p *PlacementPolicy) SetSelectors(selectors []Selector) {
if p != nil { if p != nil {
p.selectors = selectors p.selectors = selectors
} }
@ -323,11 +323,11 @@ func (p *PlacementPolicy) SetContainerBackupFactor(backupFactor uint32) {
} }
} }
func (p *PlacementPolicy) GetReplicas() []*Replica { func (p *PlacementPolicy) GetReplicas() []Replica {
return p.replicas return p.replicas
} }
func (p *PlacementPolicy) SetReplicas(replicas []*Replica) { func (p *PlacementPolicy) SetReplicas(replicas []Replica) {
p.replicas = replicas p.replicas = replicas
} }
@ -565,7 +565,7 @@ func (x *NetworkParameter) SetValue(v []byte) {
// NetworkConfig represents NeoFS network configuration. // NetworkConfig represents NeoFS network configuration.
type NetworkConfig struct { type NetworkConfig struct {
ps []*NetworkParameter ps []NetworkParameter
} }
// NumberOfParameters returns number of network parameters. // NumberOfParameters returns number of network parameters.
@ -584,7 +584,7 @@ func (x *NetworkConfig) NumberOfParameters() int {
func (x *NetworkConfig) IterateParameters(f func(*NetworkParameter) bool) { func (x *NetworkConfig) IterateParameters(f func(*NetworkParameter) bool) {
if x != nil { if x != nil {
for i := range x.ps { for i := range x.ps {
if f(x.ps[i]) { if f(&x.ps[i]) {
break break
} }
} }
@ -592,7 +592,7 @@ func (x *NetworkConfig) IterateParameters(f func(*NetworkParameter) bool) {
} }
// SetParameters sets list of network parameters. // SetParameters sets list of network parameters.
func (x *NetworkConfig) SetParameters(v ...*NetworkParameter) { func (x *NetworkConfig) SetParameters(v ...NetworkParameter) {
if x != nil { if x != nil {
x.ps = v x.ps = v
} }