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

View file

@ -84,7 +84,7 @@ func (f *Filter) StableMarshal(buf []byte) ([]byte, error) {
offset += n
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 {
return nil, err
}
@ -101,7 +101,7 @@ func (f *Filter) StableSize() (size int) {
size += protoutil.EnumSize(opFilterField, int32(f.op))
size += protoutil.StringSize(valueFilterField, f.value)
for i := range f.filters {
size += protoutil.NestedStructureSize(filtersFilterField, f.filters[i])
size += protoutil.NestedStructureSize(filtersFilterField, &f.filters[i])
}
return size
@ -230,7 +230,7 @@ func (p *PlacementPolicy) StableMarshal(buf []byte) ([]byte, error) {
)
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 {
return nil, err
}
@ -246,7 +246,7 @@ func (p *PlacementPolicy) StableMarshal(buf []byte) ([]byte, error) {
offset += n
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 {
return nil, err
}
@ -255,7 +255,7 @@ func (p *PlacementPolicy) StableMarshal(buf []byte) ([]byte, error) {
}
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 {
return nil, err
}
@ -273,17 +273,17 @@ func (p *PlacementPolicy) StableMarshal(buf []byte) ([]byte, error) {
func (p *PlacementPolicy) StableSize() (size int) {
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)
for i := range p.selectors {
size += protoutil.NestedStructureSize(selectorsPolicyField, p.selectors[i])
size += protoutil.NestedStructureSize(selectorsPolicyField, &p.selectors[i])
}
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)
@ -542,7 +542,7 @@ func (x *NetworkConfig) StableMarshal(buf []byte) ([]byte, error) {
)
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 {
return nil, err
}
@ -559,7 +559,7 @@ func (x *NetworkConfig) StableSize() (size int) {
}
for i := range x.ps {
size += protoutil.NestedStructureSize(netCfgPrmsFNum, x.ps[i])
size += protoutil.NestedStructureSize(netCfgPrmsFNum, &x.ps[i])
}
return size

View file

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

View file

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