wiretap.go 678 Bytes
Newer Older
Tomasz Zdybał's avatar
Tomasz Zdybał committed
1 2 3
package bitswap

import (
4 5
	bsmsg "gitlab.dms3.io/dms3/go-bitswap/message"
	peer "gitlab.dms3.io/p2p/go-p2p-core/peer"
Tomasz Zdybał's avatar
Tomasz Zdybał committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
)

// WireTap provides methods to access all messages sent and received by Bitswap.
// This interface can be used to implement various statistics (this is original intent).
type WireTap interface {
	MessageReceived(peer.ID, bsmsg.BitSwapMessage)
	MessageSent(peer.ID, bsmsg.BitSwapMessage)
}

// Configures Bitswap to use given wiretap.
func EnableWireTap(tap WireTap) Option {
	return func(bs *Bitswap) {
		bs.wiretap = tap
	}
}

// Configures Bitswap not to use any wiretap.
func DisableWireTap() Option {
	return func(bs *Bitswap) {
		bs.wiretap = nil
	}
}