From d5792abb7203bd94c3b8adecedf90b152b3d1ef0 Mon Sep 17 00:00:00 2001 From: Leo Chen Date: Mon, 19 Nov 2018 15:52:31 -0800 Subject: [PATCH] add a discovery module to handle peer discovery this package abstract the communication between node and beacon chain Signed-off-by: Leo Chen --- discovery/discovery.go | 62 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 discovery/discovery.go diff --git a/discovery/discovery.go b/discovery/discovery.go new file mode 100644 index 000000000..bbc234d0d --- /dev/null +++ b/discovery/discovery.go @@ -0,0 +1,62 @@ +package discovery + +import ( + "fmt" + + "github.com/dedis/kyber" + "github.com/harmony-one/harmony/p2p" +) + +type ConfigEntry struct { + IP string + Port string + Role string + ShardID string + ValidatorID int // Validator ID in its shard. + leader p2p.Peer + self p2p.Peer + peers []p2p.Peer + pubK kyber.Scalar + priK kyber.Point +} + +func (config ConfigEntry) String() string { + return fmt.Sprintf("idc: %v:%v", config.IP, config.Port) +} + +func New(pubK kyber.Scalar, priK kyber.Point) *ConfigEntry { + var config ConfigEntry + config.pubK = pubK + config.priK = priK + + config.peers = make([]p2p.Peer, 0) + + return &config +} + +func (config *ConfigEntry) StartClientMode(idcIP, idcPort string) error { + config.IP = "myip" + config.Port = "myport" + + fmt.Printf("idc ip/port: %v/%v\n", idcIP, idcPort) + + // ... + // TODO: connect to idc, and wait unless acknowledge + return nil +} + +func (config *ConfigEntry) GetShardID() string { + return config.ShardID +} + +func (config *ConfigEntry) GetPeers() []p2p.Peer { + return config.peers +} + +func (config *ConfigEntry) GetLeader() p2p.Peer { + return config.leader +} + +func (config *ConfigEntry) GetSelfPeer() p2p.Peer { + return config.self +}