-
Notifications
You must be signed in to change notification settings - Fork 133
/
params.go
93 lines (73 loc) · 1.6 KB
/
params.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package add
import (
"context"
"errors"
"github.com/ExzoNetwork/ExzoCoin/command"
"github.com/ExzoNetwork/ExzoCoin/command/helper"
"github.com/ExzoNetwork/ExzoCoin/server/proto"
)
var (
params = &addParams{
addedPeers: make([]string, 0),
addErrors: make([]string, 0),
}
)
var (
errInvalidAddresses = errors.New("at least 1 peer address is required")
)
const (
addrFlag = "addr"
)
type addParams struct {
peerAddresses []string
systemClient proto.SystemClient
addedPeers []string
addErrors []string
}
func (p *addParams) getRequiredFlags() []string {
return []string{
addrFlag,
}
}
func (p *addParams) validateFlags() error {
if len(p.peerAddresses) < 1 {
return errInvalidAddresses
}
return nil
}
func (p *addParams) initSystemClient(grpcAddress string) error {
systemClient, err := helper.GetSystemClientConnection(grpcAddress)
if err != nil {
return err
}
p.systemClient = systemClient
return nil
}
func (p *addParams) addPeers() {
for _, address := range p.peerAddresses {
if addErr := p.addPeer(address); addErr != nil {
p.addErrors = append(p.addErrors, addErr.Error())
continue
}
p.addedPeers = append(p.addedPeers, address)
}
}
func (p *addParams) addPeer(peerAddress string) error {
if _, err := p.systemClient.PeersAdd(
context.Background(),
&proto.PeersAddRequest{
Id: peerAddress,
},
); err != nil {
return err
}
return nil
}
func (p *addParams) getResult() command.CommandResult {
return &PeersAddResult{
NumRequested: len(p.peerAddresses),
NumAdded: len(p.addedPeers),
Peers: p.addedPeers,
Errors: p.addErrors,
}
}