Skip to content

Commit

Permalink
chore: opt peer event
Browse files Browse the repository at this point in the history
  • Loading branch information
simlecode committed Sep 16, 2022
1 parent 08d4cda commit 29960aa
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 9 deletions.
12 changes: 9 additions & 3 deletions pkg/net/exchange/peer_tracker.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,20 @@ func newPeerTracker(h host.Host, pmgr peermgr.IPeerMgr) *bsPeerTracker {
pmgr: pmgr,
}

sub, err := h.EventBus().Subscribe(new(peermgr.NewFilPeer))
sub, err := h.EventBus().Subscribe(new(peermgr.FilPeerEvt))
if err != nil {
panic(err)
}

go func() {
for newPeer := range sub.Out() {
bsPt.addPeer(newPeer.(peermgr.NewFilPeer).Id)
for evt := range sub.Out() {
pEvt := evt.(peermgr.FilPeerEvt)
switch pEvt.Type {
case peermgr.AddFilPeerEvt:
bsPt.addPeer(pEvt.ID)
case peermgr.RemoveFilPeerEvt:
bsPt.removePeer(pEvt.ID)
}
}
}()
return bsPt
Expand Down
29 changes: 23 additions & 6 deletions pkg/net/peermgr/peermgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,18 @@ type PeerMgr struct {
done chan struct{}
}

type NewFilPeer struct {
Id peer.ID //nolint
type FilPeerEvt struct {
Type FilPeerEvtType
ID peer.ID
}

type FilPeerEvtType int

const (
AddFilPeerEvt FilPeerEvtType = iota
RemoveFilPeerEvt
)

func NewPeerMgr(h host.Host, dht *dht.IpfsDHT, period time.Duration, bootstrap []peer.AddrInfo) (*PeerMgr, error) {
pm := &PeerMgr{
h: h,
Expand All @@ -78,7 +86,7 @@ func NewPeerMgr(h host.Host, dht *dht.IpfsDHT, period time.Duration, bootstrap [
done: make(chan struct{}),
period: period,
}
emitter, err := h.EventBus().Emitter(new(NewFilPeer))
emitter, err := h.EventBus().Emitter(new(FilPeerEvt))
if err != nil {
return nil, fmt.Errorf("creating NewFilPeer emitter: %w", err)
}
Expand All @@ -96,7 +104,7 @@ func NewPeerMgr(h host.Host, dht *dht.IpfsDHT, period time.Duration, bootstrap [
}

func (pmgr *PeerMgr) AddFilecoinPeer(p peer.ID) {
_ = pmgr.filPeerEmitter.Emit(NewFilPeer{Id: p}) //nolint:errcheck
_ = pmgr.filPeerEmitter.Emit(FilPeerEvt{Type: AddFilPeerEvt, ID: p}) //nolint:errcheck
pmgr.peersLk.Lock()
defer pmgr.peersLk.Unlock()
pmgr.peers[p] = time.Duration(0)
Expand All @@ -119,10 +127,19 @@ func (pmgr *PeerMgr) SetPeerLatency(p peer.ID, latency time.Duration) {
}

func (pmgr *PeerMgr) Disconnect(p peer.ID) {
disconnected := false

if pmgr.h.Network().Connectedness(p) == net.NotConnected {
pmgr.peersLk.Lock()
defer pmgr.peersLk.Unlock()
delete(pmgr.peers, p)
_, disconnected = pmgr.peers[p]
if disconnected {
delete(pmgr.peers, p)
}
pmgr.peersLk.Unlock()
}

if disconnected {
_ = pmgr.filPeerEmitter.Emit(FilPeerEvt{Type: RemoveFilPeerEvt, ID: p}) //nolint:errcheck
}
}

Expand Down

0 comments on commit 29960aa

Please sign in to comment.