parent
598c32f85b
commit
178154bb95
@ -1,99 +0,0 @@ |
|||||||
package configr |
|
||||||
|
|
||||||
import ( |
|
||||||
"bufio" |
|
||||||
"log" |
|
||||||
"os" |
|
||||||
"strconv" |
|
||||||
"strings" |
|
||||||
|
|
||||||
"github.com/simple-rules/harmony-benchmark/p2p" |
|
||||||
) |
|
||||||
|
|
||||||
type ConfigEntry struct { |
|
||||||
IP string |
|
||||||
Port string |
|
||||||
Role string |
|
||||||
ShardID string |
|
||||||
} |
|
||||||
|
|
||||||
type Configr struct { |
|
||||||
config []ConfigEntry |
|
||||||
} |
|
||||||
|
|
||||||
func NewConfigr() *Configr { |
|
||||||
configr := Configr{} |
|
||||||
return &configr |
|
||||||
} |
|
||||||
|
|
||||||
// Gets all the validator peers
|
|
||||||
func (configr *Configr) GetValidators() []p2p.Peer { |
|
||||||
var peerList []p2p.Peer |
|
||||||
for _, entry := range configr.config { |
|
||||||
if entry.Role != "validator" { |
|
||||||
continue |
|
||||||
} |
|
||||||
peer := p2p.Peer{Port: entry.Port, Ip: entry.IP} |
|
||||||
peerList = append(peerList, peer) |
|
||||||
} |
|
||||||
return peerList |
|
||||||
} |
|
||||||
|
|
||||||
// Gets all the leader peers and corresponding shard Ids
|
|
||||||
func (configr *Configr) GetLeadersAndShardIds() ([]p2p.Peer, []uint32) { |
|
||||||
var peerList []p2p.Peer |
|
||||||
var shardIDs []uint32 |
|
||||||
for _, entry := range configr.config { |
|
||||||
if entry.Role == "leader" { |
|
||||||
peerList = append(peerList, p2p.Peer{Ip: entry.IP, Port: entry.Port}) |
|
||||||
val, err := strconv.Atoi(entry.ShardID) |
|
||||||
if err == nil { |
|
||||||
shardIDs = append(shardIDs, uint32(val)) |
|
||||||
} else { |
|
||||||
log.Print("[Generator] Error parsing the shard Id ", entry.ShardID) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
return peerList, shardIDs |
|
||||||
} |
|
||||||
|
|
||||||
func (configr *Configr) GetClientPeer() *p2p.Peer { |
|
||||||
for _, entry := range configr.config { |
|
||||||
if entry.Role != "client" { |
|
||||||
continue |
|
||||||
} |
|
||||||
peer := p2p.Peer{Port: entry.Port, Ip: entry.IP} |
|
||||||
return &peer |
|
||||||
} |
|
||||||
return nil |
|
||||||
} |
|
||||||
|
|
||||||
// Gets the port of the client node in the config
|
|
||||||
func (configr *Configr) GetClientPort() string { |
|
||||||
for _, entry := range configr.config { |
|
||||||
if entry.Role == "client" { |
|
||||||
return entry.Port |
|
||||||
} |
|
||||||
} |
|
||||||
return "" |
|
||||||
} |
|
||||||
|
|
||||||
// Parse the config file and return a 2d array containing the file data
|
|
||||||
func (configr *Configr) ReadConfigFile(filename string) error { |
|
||||||
file, err := os.Open(filename) |
|
||||||
defer file.Close() |
|
||||||
if err != nil { |
|
||||||
log.Fatal("Failed to read config file ", filename) |
|
||||||
return err |
|
||||||
} |
|
||||||
fscanner := bufio.NewScanner(file) |
|
||||||
|
|
||||||
result := []ConfigEntry{} |
|
||||||
for fscanner.Scan() { |
|
||||||
p := strings.Split(fscanner.Text(), " ") |
|
||||||
entry := ConfigEntry{p[0], p[1], p[2], p[3]} |
|
||||||
result = append(result, entry) |
|
||||||
} |
|
||||||
configr.config = result |
|
||||||
return nil |
|
||||||
} |
|
Loading…
Reference in new issue