keep track of number of same connections
Jeromy committed
Jan 12, 2015 at 06:14 UTC
6cb46a706cd569ee63bd3acd0ba5bf09cf9ec28e
1 file changed
+14
-15
diagnostics/diag.go
+14
-15
@@ -60,6 +60,7 @@ func NewDiagnostics(self peer.ID, h host.Host) *Diagnostics {
60
type connDiagInfo struct {
61
Latency time.Duration
62
ID string
63
+ Count int
64
}
65
66
type DiagInfo struct {
@@ -97,19 +98,13 @@ func (di *DiagInfo) Marshal() []byte {
98
return b
99
}
100
100
-func (d *Diagnostics) getPeers() []peer.ID {
101
- peers := d.host.Network().Peers()
102
- seen := make(map[peer.ID]struct{})
103
- out := make([]peer.ID, 0, len(peers))
104
- for _, p := range peers {
105
- _, ok := seen[p]
106
- if !ok {
107
- out = append(out, p)
108
- seen[p] = struct{}{}
109
- }
101
+func (d *Diagnostics) getPeers() map[peer.ID]int {
102
+ counts := make(map[peer.ID]int)
103
+ for _, p := range d.host.Network().Peers() {
104
+ counts[p]++
105
}
106
112
- return out
107
+ return counts
108
}
109
110
func (d *Diagnostics) getDiagInfo() *DiagInfo {
@@ -121,8 +116,12 @@ func (d *Diagnostics) getDiagInfo() *DiagInfo {
116
117
// di.BwIn, di.BwOut = d.host.BandwidthTotals() //TODO fix this.
118
124
- for _, p := range d.getPeers() {
125
- d := connDiagInfo{d.host.Peerstore().LatencyEWMA(p), p.Pretty()}
119
+ for p, n := range d.getPeers() {
120
+ d := connDiagInfo{
121
+ Latency: d.host.Peerstore().LatencyEWMA(p),
122
+ ID: p.Pretty(),
123
+ Count: n,
124
+ }
125
di.Connections = append(di.Connections, d)
126
}
127
return di
@@ -157,7 +156,7 @@ func (d *Diagnostics) GetDiagnostic(timeout time.Duration) ([]*DiagInfo, error)
156
157
respdata := make(chan []byte)
158
sends := 0
160
- for _, p := range peers {
159
+ for p, _ := range peers {
160
log.Debugf("Sending getDiagnostic to: %s", p)
161
sends++
162
go func(p peer.ID) {
@@ -265,7 +264,7 @@ func (d *Diagnostics) handleDiagnostic(p peer.ID, pmes *pb.Message) (*pb.Message
264
265
respdata := make(chan []byte)
266
sendcount := 0
268
- for _, p := range d.getPeers() {
267
+ for p, _ := range d.getPeers() {
268
log.Debugf("Sending diagnostic request to peer: %s", p)
269
sendcount++
270
go func(p peer.ID) {