This repository has been archived by the owner on May 24, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
notifiee.go
99 lines (78 loc) · 2.04 KB
/
notifiee.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
94
95
96
97
98
99
package peers
import (
peerstypes "github.com/opennetsys/golkadot/client/p2p/peers/types"
clienttypes "github.com/opennetsys/golkadot/client/types"
"github.com/opennetsys/golkadot/logger"
inet "github.com/libp2p/go-libp2p-net"
ma "github.com/multiformats/go-multiaddr"
)
// Notifiee ...
// TODO: make private?
type Notifiee struct {
peers clienttypes.InterfacePeers
}
// Listen ...
func (n *Notifiee) Listen(net inet.Network, addr ma.Multiaddr) {}
// ListenClose ...
func (n *Notifiee) ListenClose(net inet.Network, addr ma.Multiaddr) {}
// Connected ...
func (n *Notifiee) Connected(net inet.Network, conn inet.Conn) {
if net == nil || conn == nil {
logger.Info("[peers] net and conn required")
return
}
pID := conn.RemotePeer()
ps := net.Peerstore()
if ps == nil {
logger.Error("[peers] nil pstore")
return
}
pi := ps.PeerInfo(pID)
kp, err := n.peers.Get(pi)
if err != nil {
logger.Errorf("[peers] err getting known peer from pi %v\n%v", pi, err)
return
}
if kp == nil {
logger.Info("[peers] nil known peer")
return
}
if !kp.IsConnected {
kp.IsConnected = true
if err = n.peers.Log(peerstypes.Connected, kp.Peer); err != nil {
logger.Errorf("[peers] err logging connected\n%v", err)
}
}
}
// Disconnected ...
func (n *Notifiee) Disconnected(net inet.Network, conn inet.Conn) {
if net == nil || conn == nil {
logger.Info("[peers] net and conn required")
return
}
pID := conn.RemotePeer()
ps := net.Peerstore()
if ps == nil {
logger.Error("[peers] nil pstore")
return
}
pi := ps.PeerInfo(pID)
kp, err := n.peers.Get(pi)
if err != nil {
logger.Errorf("[peers] err getting known peer with pi %v\n%v", pi, err)
return
}
if !kp.IsConnected {
return
}
kp.IsConnected = false
if err = n.peers.Log(peerstypes.Disconnected, kp.Peer); err != nil {
logger.Errorf("[peers] err logging disconected\n%v", err)
}
}
// OpenedStream ...
func (n *Notifiee) OpenedStream(net inet.Network, stream inet.Stream) {
}
// ClosedStream ...
func (n *Notifiee) ClosedStream(net inet.Network, stream inet.Stream) {
}