stat.go 845 Bytes
Newer Older
1 2 3
package bitswap

import (
Jeromy's avatar
Jeromy committed
4
	"sort"
5

6
	cid "gx/ipfs/Qma4RJSuh7mMeJQYCqMbKzekn6EwBo7HEs5AQYjVRMQATB/go-cid"
7 8 9
)

type Stat struct {
10
	ProvideBufLen   int
11
	Wantlist        []*cid.Cid
12 13
	Peers           []string
	BlocksReceived  int
Jeromy's avatar
Jeromy committed
14 15 16
	DataReceived    uint64
	BlocksSent      int
	DataSent        uint64
17
	DupBlksReceived int
18
	DupDataReceived uint64
19 20 21 22 23 24
}

func (bs *Bitswap) Stat() (*Stat, error) {
	st := new(Stat)
	st.ProvideBufLen = len(bs.newBlocks)
	st.Wantlist = bs.GetWantlist()
Jeromy's avatar
Jeromy committed
25
	bs.counterLk.Lock()
26 27
	st.BlocksReceived = bs.blocksRecvd
	st.DupBlksReceived = bs.dupBlocksRecvd
28
	st.DupDataReceived = bs.dupDataRecvd
Jeromy's avatar
Jeromy committed
29 30 31
	st.BlocksSent = bs.blocksSent
	st.DataSent = bs.dataSent
	st.DataReceived = bs.dataRecvd
Jeromy's avatar
Jeromy committed
32
	bs.counterLk.Unlock()
33

Jeromy's avatar
Jeromy committed
34 35 36 37
	for _, p := range bs.engine.Peers() {
		st.Peers = append(st.Peers, p.Pretty())
	}
	sort.Strings(st.Peers)
38 39 40

	return st, nil
}