lotus/node/modules/tracer/tracer.go
2021-09-10 15:37:38 +02:00

56 lines
1.2 KiB
Go

package tracer
import (
"encoding/json"
logging "github.com/ipfs/go-log/v2"
peer "github.com/libp2p/go-libp2p-core/peer"
pubsub "github.com/libp2p/go-libp2p-pubsub"
pubsub_pb "github.com/libp2p/go-libp2p-pubsub/pb"
)
var log = logging.Logger("lotus-tracer")
func newLotusTracer(et pubsub.EventTracer, tt TracerTransport) LotusTracer {
return &lotusTracer{
et: et,
tt: tt,
}
}
type lotusTracer struct {
et pubsub.EventTracer
tt TracerTransport
}
type LotusTracer interface {
TracePeerScore(scores map[peer.ID]*pubsub.PeerScoreSnapshot)
Trace(evt *pubsub_pb.TraceEvent)
}
func (lt *lotusTracer) TracePeerScore(scores map[peer.ID]*pubsub.PeerScoreSnapshot) {
jsonEvent, err := json.Marshal(scores)
if err != nil {
log.Errorf("error while marshaling peer score: %s", err)
return
}
err = lt.tt.Transport(jsonEvent)
if err != nil {
log.Errorf("error while transporting peer scores: %s", err)
}
}
func (lt *lotusTracer) Trace(evt *pubsub_pb.TraceEvent) {
jsonEvent, err := json.Marshal(evt)
if err != nil {
log.Errorf("error while marshaling tracer event: %s", err)
return
}
err = lt.tt.Transport(jsonEvent)
if err != nil {
log.Errorf("error while transporting trace event: %s", err)
}
}