Skip to content

Commit f45bd0b

Browse files
committed
morph: remove useless setters of notary events
This code complicates things for nothing and may lead to bugs related to structure fields order initialization. Raw parsing is more clear and takes less space. Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
1 parent a1a27c6 commit f45bd0b

4 files changed

Lines changed: 53 additions & 111 deletions

File tree

pkg/morph/event/container/delete_notary.go

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,6 @@ import (
55
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
66
)
77

8-
func (d *Delete) setContainerID(v []byte) {
9-
d.containerID = v
10-
}
11-
12-
func (d *Delete) setSignature(v []byte) {
13-
d.signature = v
14-
}
15-
16-
func (d *Delete) setToken(v []byte) {
17-
d.token = v
18-
}
19-
20-
var deleteFieldSetters = []func(*Delete, []byte){
21-
(*Delete).setContainerID,
22-
(*Delete).setSignature,
23-
(*Delete).setToken,
24-
}
25-
268
const (
279
// DeleteNotaryEvent is method name for container delete operations
2810
// in `Container` contract. Is used as identificator for notary
@@ -40,12 +22,17 @@ func ParseDeleteNotary(ne event.NotaryEvent) (event.Event, error) {
4022
return nil, err
4123
}
4224

43-
for i := range args {
44-
v, err := event.GetValueFromArg(args, i, ne.Type().String(), scparser.GetBytesFromInstr)
45-
if err != nil {
46-
return nil, err
47-
}
48-
deleteFieldSetters[i](&ev, v)
25+
ev.containerID, err = event.GetValueFromArg(args, 0, ne.Type().String(), scparser.GetBytesFromInstr)
26+
if err != nil {
27+
return nil, err
28+
}
29+
ev.signature, err = event.GetValueFromArg(args, 1, ne.Type().String(), scparser.GetBytesFromInstr)
30+
if err != nil {
31+
return nil, err
32+
}
33+
ev.token, err = event.GetValueFromArg(args, 2, ne.Type().String(), scparser.GetBytesFromInstr)
34+
if err != nil {
35+
return nil, err
4936
}
5037

5138
ev.notaryRequest = ne.Raw()

pkg/morph/event/container/eacl_notary.go

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,6 @@ import (
55
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
66
)
77

8-
func (x *SetEACL) setTable(v []byte) {
9-
x.table = v
10-
}
11-
12-
func (x *SetEACL) setSignature(v []byte) {
13-
x.signature = v
14-
}
15-
16-
func (x *SetEACL) setPublicKey(v []byte) {
17-
x.publicKey = v
18-
}
19-
20-
func (x *SetEACL) setToken(v []byte) {
21-
x.token = v
22-
}
23-
24-
var setEACLFieldSetters = []func(*SetEACL, []byte){
25-
(*SetEACL).setTable,
26-
(*SetEACL).setSignature,
27-
(*SetEACL).setPublicKey,
28-
(*SetEACL).setToken,
29-
}
30-
318
const (
329
// SetEACLNotaryEvent is method name for container EACL operations
3310
// in `Container` contract. Is used as identificator for notary
@@ -44,12 +21,22 @@ func ParseSetEACLNotary(ne event.NotaryEvent) (event.Event, error) {
4421
if err != nil {
4522
return nil, err
4623
}
47-
for i := range args {
48-
v, err := event.GetValueFromArg(args, i, ne.Type().String(), scparser.GetBytesFromInstr)
49-
if err != nil {
50-
return nil, err
51-
}
52-
setEACLFieldSetters[i](&ev, v)
24+
25+
ev.table, err = event.GetValueFromArg(args, 0, ne.Type().String(), scparser.GetBytesFromInstr)
26+
if err != nil {
27+
return nil, err
28+
}
29+
ev.signature, err = event.GetValueFromArg(args, 1, ne.Type().String(), scparser.GetBytesFromInstr)
30+
if err != nil {
31+
return nil, err
32+
}
33+
ev.publicKey, err = event.GetValueFromArg(args, 2, ne.Type().String(), scparser.GetBytesFromInstr)
34+
if err != nil {
35+
return nil, err
36+
}
37+
ev.token, err = event.GetValueFromArg(args, 3, ne.Type().String(), scparser.GetBytesFromInstr)
38+
if err != nil {
39+
return nil, err
5340
}
5441

5542
ev.notaryRequest = ne.Raw()

pkg/morph/event/container/put_notary.go

Lines changed: 25 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -8,46 +8,6 @@ import (
88
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
99
)
1010

11-
const (
12-
putArgCnt = 4
13-
putNamedArgCnt = 6 // `putNamed` has the same args as `put` + (name, zone) (2)
14-
)
15-
16-
func (p *Put) setRawContainer(v []byte) {
17-
p.rawContainer = v
18-
}
19-
20-
func (p *Put) setSignature(v []byte) {
21-
p.signature = v
22-
}
23-
24-
func (p *Put) setPublicKey(v []byte) {
25-
p.publicKey = v
26-
}
27-
28-
func (p *Put) setToken(v []byte) {
29-
p.token = v
30-
}
31-
32-
func (p *Put) setName(v string) {
33-
p.name = v
34-
}
35-
36-
func (p *Put) setZone(v string) {
37-
p.zone = v
38-
}
39-
40-
func (p *Put) setMetaOnChain(v bool) {
41-
p.metaOnChain = v
42-
}
43-
44-
var putFieldSetters = []func(*Put, []byte){
45-
(*Put).setRawContainer,
46-
(*Put).setSignature,
47-
(*Put).setPublicKey,
48-
(*Put).setToken,
49-
}
50-
5111
const (
5212
// PutNotaryEvent is method name for container put operations
5313
// in `Container` contract. Is used as identificator for notary
@@ -58,18 +18,22 @@ const (
5818
PutNamedNotaryEvent = "putNamed"
5919
)
6020

21+
const (
22+
putArgCnt = 4
23+
putNamedArgCnt = 6 // `putNamed` has the same args as `put` + (name, zone) (2)
24+
)
25+
6126
func parsePutNotary(ev *Put, raw *payload.P2PNotaryRequest, args []scparser.PushedItem, t event.NotaryType) error {
6227
switch l := len(args); l {
6328
case putArgCnt + 3:
6429
err := parseNamedArgs(ev, args[putArgCnt:])
6530
if err != nil {
6631
return err
6732
}
68-
enableMeta, err := event.GetValueFromArg(args, l-1, t.String(), scparser.GetBoolFromInstr)
33+
ev.metaOnChain, err = event.GetValueFromArg(args, l-1, t.String(), scparser.GetBoolFromInstr)
6934
if err != nil {
7035
return err
7136
}
72-
ev.setMetaOnChain(enableMeta)
7337
case putArgCnt + 2:
7438
err := parseNamedArgs(ev, args[putArgCnt:])
7539
if err != nil {
@@ -80,12 +44,22 @@ func parsePutNotary(ev *Put, raw *payload.P2PNotaryRequest, args []scparser.Push
8044
return fmt.Errorf("%s: unknown number of args: %d", t, l)
8145
}
8246

83-
for i := range args[:putArgCnt] {
84-
b, err := event.GetValueFromArg(args, i, t.String(), scparser.GetBytesFromInstr)
85-
if err != nil {
86-
return err
87-
}
88-
putFieldSetters[i](ev, b)
47+
var err error
48+
ev.rawContainer, err = event.GetValueFromArg(args, 0, t.String(), scparser.GetBytesFromInstr)
49+
if err != nil {
50+
return err
51+
}
52+
ev.signature, err = event.GetValueFromArg(args, 1, t.String(), scparser.GetBytesFromInstr)
53+
if err != nil {
54+
return err
55+
}
56+
ev.publicKey, err = event.GetValueFromArg(args, 2, t.String(), scparser.GetBytesFromInstr)
57+
if err != nil {
58+
return err
59+
}
60+
ev.token, err = event.GetValueFromArg(args, 3, t.String(), scparser.GetBytesFromInstr)
61+
if err != nil {
62+
return err
8963
}
9064

9165
ev.notaryRequest = raw
@@ -94,19 +68,17 @@ func parsePutNotary(ev *Put, raw *payload.P2PNotaryRequest, args []scparser.Push
9468
}
9569

9670
func parseNamedArgs(ev *Put, args []scparser.PushedItem) error {
97-
name, err := scparser.GetStringFromInstr(args[0].Instruction)
71+
var err error
72+
ev.name, err = scparser.GetStringFromInstr(args[0].Instruction)
9873
if err != nil {
9974
return fmt.Errorf("zone: %w", err)
10075
}
10176

102-
zone, err := scparser.GetStringFromInstr(args[1].Instruction)
77+
ev.zone, err = scparser.GetStringFromInstr(args[1].Instruction)
10378
if err != nil {
10479
return fmt.Errorf("name: %w", err)
10580
}
10681

107-
ev.setName(name)
108-
ev.setZone(zone)
109-
11082
return nil
11183
}
11284

pkg/morph/event/reputation/put_notary.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ import (
77
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
88
)
99

10-
func (p *Put) setEpoch(v uint64) {
11-
p.epoch = v
12-
}
13-
1410
func (p *Put) setPeerID(v []byte) error {
1511
if ln := len(v); ln != peerIDLength {
1612
return fmt.Errorf("peer ID is %d byte long, expected %d", ln, peerIDLength)
@@ -46,7 +42,7 @@ func ParsePutNotary(ne event.NotaryEvent) (event.Event, error) {
4642
if err != nil {
4743
return nil, err
4844
}
49-
ev.setEpoch(uint64(epoch))
45+
ev.epoch = uint64(epoch)
5046

5147
peerID, err := event.GetValueFromArg(args, 1, ne.Type().String(), scparser.GetBytesFromInstr)
5248
if err != nil {

0 commit comments

Comments
 (0)