@cryptotaxi247 / kubo / commits / 6cb46a706

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) {