64 lines
1.0 KiB
Go
64 lines
1.0 KiB
Go
package peers
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/app"
|
|
)
|
|
|
|
type PeerType int
|
|
|
|
const (
|
|
PeerTypeClient PeerType = iota
|
|
PeerTypeNode
|
|
)
|
|
|
|
const CName = "debug.peers"
|
|
|
|
var ErrNoSuchPeer = errors.New("no such peer")
|
|
|
|
type Service interface {
|
|
app.Component
|
|
Get(alias string) (Peer, error)
|
|
}
|
|
|
|
type Peer struct {
|
|
PeerType PeerType
|
|
Address string
|
|
}
|
|
|
|
type service struct {
|
|
peerMap map[string]Peer
|
|
}
|
|
|
|
func New() Service {
|
|
return &service{peerMap: map[string]Peer{}}
|
|
}
|
|
|
|
func (s *service) Init(a *app.App) (err error) {
|
|
s.peerMap["client1"] = Peer{
|
|
PeerType: PeerTypeClient,
|
|
Address: "127.0.0.1:8090",
|
|
}
|
|
s.peerMap["client2"] = Peer{
|
|
PeerType: PeerTypeClient,
|
|
Address: "127.0.0.1:8091",
|
|
}
|
|
s.peerMap["node1"] = Peer{
|
|
PeerType: PeerTypeNode,
|
|
Address: "127.0.0.1:8080",
|
|
}
|
|
return
|
|
}
|
|
|
|
func (s *service) Name() (name string) {
|
|
return CName
|
|
}
|
|
|
|
func (s *service) Get(alias string) (Peer, error) {
|
|
peer, ok := s.peerMap[alias]
|
|
if !ok {
|
|
return Peer{}, ErrNoSuchPeer
|
|
}
|
|
return peer, nil
|
|
}
|