webrtc.go | 16 ++++++++++++++++ diff --git a/webrtc.go b/webrtc.go index 4a86e89232a8028df5f612d7325ed16fd3bcd4ae..aff1e0a3c5675017b7ff819123aea8ce705d44e2 100644 --- a/webrtc.go +++ b/webrtc.go @@ -1,6 +1,9 @@ package torrent import ( + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/trace" "net" "strconv" "time" @@ -56,13 +59,26 @@ // Do we need these for WebRTC connections exposed as net.Conns? Can we set them somewhere inside // PeerConnection or on the channel or some transport? func (w webrtcNetConn) SetDeadline(t time.Time) error { + w.Span.AddEvent("SetDeadline", trace.WithAttributes(attribute.String("time", t.String()))) return nil } func (w webrtcNetConn) SetReadDeadline(t time.Time) error { + w.Span.AddEvent("SetReadDeadline", trace.WithAttributes(attribute.String("time", t.String()))) return nil } func (w webrtcNetConn) SetWriteDeadline(t time.Time) error { + w.Span.AddEvent("SetWriteDeadline", trace.WithAttributes(attribute.String("time", t.String()))) return nil } + +func (w webrtcNetConn) Read(b []byte) (n int, err error) { + _, span := otel.Tracer(tracerName).Start(w.Context, "Read") + defer span.End() + span.SetAttributes(attribute.Int("buf_len", len(b))) + n, err = w.ReadWriteCloser.Read(b) + span.RecordError(err) + span.SetAttributes(attribute.Int("bytes_read", n)) + return +}