@@ -3,9 +3,9 @@ package quic
33import (
44 "context"
55 "net"
6+ "time"
67
78 "github.com/lucas-clemente/quic-go/logging"
8- "github.com/lucas-clemente/quic-go/qlog"
99 "github.com/rs/zerolog"
1010)
1111
@@ -40,75 +40,116 @@ func NewServerTracer(logger *zerolog.Logger) logging.Tracer {
4040 }
4141}
4242
43- func (t * tracer ) TracerForConnection (_ context.Context , p logging.Perspective , odcid logging.ConnectionID ) logging.ConnectionTracer {
44- connID := logging .ConnectionID (odcid ).String ()
45- ql := & quicLogger {
46- logger : t .logger ,
47- connectionID : connID ,
48- }
43+ func (t * tracer ) TracerForConnection (_ctx context.Context , _p logging.Perspective , _odcid logging.ConnectionID ) logging.ConnectionTracer {
4944 if t .config .isClient {
50- return newConnTracer (ql , p , odcid , newClientCollector (t .config .index ))
45+ return newConnTracer (newClientCollector (t .config .index ))
5146 }
52- return newConnTracer (ql , p , odcid , newServiceCollector ())
47+ return newConnTracer (newServiceCollector ())
5348}
5449
5550func (* tracer ) SentPacket (net.Addr , * logging.Header , logging.ByteCount , []logging.Frame ) {}
5651func (* tracer ) DroppedPacket (net.Addr , logging.PacketType , logging.ByteCount , logging.PacketDropReason ) {
5752}
5853
59- // connTracer is a wrapper around https://pkg.go.dev/github.com/lucas-clemente/[email protected] /qlog#NewConnectionTracer to collect metrics 54+ var _ logging.Tracer = (* tracer )(nil )
55+
56+ // connTracer collects connection level metrics
6057type connTracer struct {
61- logging.ConnectionTracer
6258 metricsCollector MetricsCollector
63- connectionID string
6459}
6560
66- func newConnTracer (ql * quicLogger , p logging.Perspective , odcid logging.ConnectionID , metricsCollector MetricsCollector ) logging.ConnectionTracer {
61+ var _ logging.ConnectionTracer = (* connTracer )(nil )
62+
63+ func newConnTracer (metricsCollector MetricsCollector ) logging.ConnectionTracer {
6764 return & connTracer {
68- qlog .NewConnectionTracer (ql , p , odcid ),
69- metricsCollector ,
70- logging .ConnectionID (odcid ).String (),
65+ metricsCollector : metricsCollector ,
7166 }
7267}
7368
7469func (ct * connTracer ) StartedConnection (local , remote net.Addr , srcConnID , destConnID logging.ConnectionID ) {
7570 ct .metricsCollector .startedConnection ()
76- ct .ConnectionTracer .StartedConnection (local , remote , srcConnID , destConnID )
7771}
7872
7973func (ct * connTracer ) ClosedConnection (err error ) {
8074 ct .metricsCollector .closedConnection (err )
81- ct .ConnectionTracer .ClosedConnection (err )
8275}
8376
8477func (ct * connTracer ) SentPacket (hdr * logging.ExtendedHeader , packetSize logging.ByteCount , ack * logging.AckFrame , frames []logging.Frame ) {
8578 ct .metricsCollector .sentPackets (packetSize )
86- ct .ConnectionTracer .SentPacket (hdr , packetSize , ack , frames )
8779}
8880
8981func (ct * connTracer ) ReceivedPacket (hdr * logging.ExtendedHeader , size logging.ByteCount , frames []logging.Frame ) {
9082 ct .metricsCollector .receivedPackets (size )
91- ct .ConnectionTracer .ReceivedPacket (hdr , size , frames )
9283}
9384
9485func (ct * connTracer ) BufferedPacket (pt logging.PacketType ) {
9586 ct .metricsCollector .bufferedPackets (pt )
96- ct .ConnectionTracer .BufferedPacket (pt )
9787}
9888
9989func (ct * connTracer ) DroppedPacket (pt logging.PacketType , size logging.ByteCount , reason logging.PacketDropReason ) {
10090 ct .metricsCollector .droppedPackets (pt , size , reason )
101- ct .ConnectionTracer .DroppedPacket (pt , size , reason )
10291}
10392
10493func (ct * connTracer ) LostPacket (level logging.EncryptionLevel , number logging.PacketNumber , reason logging.PacketLossReason ) {
10594 ct .metricsCollector .lostPackets (reason )
106- ct .ConnectionTracer .LostPacket (level , number , reason )
10795}
10896
10997func (ct * connTracer ) UpdatedMetrics (rttStats * logging.RTTStats , cwnd , bytesInFlight logging.ByteCount , packetsInFlight int ) {
11098 ct .metricsCollector .updatedRTT (rttStats )
111- ct .ConnectionTracer .UpdatedMetrics (rttStats , cwnd , bytesInFlight , packetsInFlight )
99+ }
100+
101+ func (ct * connTracer ) NegotiatedVersion (chosen logging.VersionNumber , clientVersions , serverVersions []logging.VersionNumber ) {
102+ }
103+
104+ func (ct * connTracer ) SentTransportParameters (parameters * logging.TransportParameters ) {
105+ }
106+
107+ func (ct * connTracer ) ReceivedTransportParameters (parameters * logging.TransportParameters ) {
108+ }
109+
110+ func (ct * connTracer ) RestoredTransportParameters (parameters * logging.TransportParameters ) {
111+ }
112+
113+ func (ct * connTracer ) ReceivedVersionNegotiationPacket (header * logging.Header , numbers []logging.VersionNumber ) {
114+ }
115+
116+ func (ct * connTracer ) ReceivedRetry (header * logging.Header ) {
117+ }
118+
119+ func (ct * connTracer ) AcknowledgedPacket (level logging.EncryptionLevel , number logging.PacketNumber ) {
120+ }
121+
122+ func (ct * connTracer ) UpdatedCongestionState (state logging.CongestionState ) {
123+ }
124+
125+ func (ct * connTracer ) UpdatedPTOCount (value uint32 ) {
126+ }
127+
128+ func (ct * connTracer ) UpdatedKeyFromTLS (level logging.EncryptionLevel , perspective logging.Perspective ) {
129+ }
130+
131+ func (ct * connTracer ) UpdatedKey (generation logging.KeyPhase , remote bool ) {
132+ }
133+
134+ func (ct * connTracer ) DroppedEncryptionLevel (level logging.EncryptionLevel ) {
135+ }
136+
137+ func (ct * connTracer ) DroppedKey (generation logging.KeyPhase ) {
138+ }
139+
140+ func (ct * connTracer ) SetLossTimer (timerType logging.TimerType , level logging.EncryptionLevel , time time.Time ) {
141+ }
142+
143+ func (ct * connTracer ) LossTimerExpired (timerType logging.TimerType , level logging.EncryptionLevel ) {
144+ }
145+
146+ func (ct * connTracer ) LossTimerCanceled () {
147+ }
148+
149+ func (ct * connTracer ) Close () {
150+ }
151+
152+ func (ct * connTracer ) Debug (name , msg string ) {
112153}
113154
114155type quicLogger struct {
0 commit comments