-
Notifications
You must be signed in to change notification settings - Fork 0
/
stats.go
100 lines (89 loc) · 4.76 KB
/
stats.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package extra
import (
"context"
"net"
"time"
"github.com/netsec-ethz/scion-apps/pkg/pan"
"github.com/quic-go/quic-go"
"github.com/quic-go/quic-go/logging"
)
type RTTStats struct {
LatestRTT, MaxAckDelay, MeanDeviation, MinRTT, PTO, SmoothedRTT time.Duration
}
func NewRTTStats(stats *logging.RTTStats) *RTTStats {
return &RTTStats{
LatestRTT: stats.LatestRTT(),
MaxAckDelay: stats.MaxAckDelay(),
MeanDeviation: stats.MeanDeviation(),
MinRTT: stats.MinRTT(),
PTO: stats.PTO(false),
SmoothedRTT: stats.SmoothedRTT(),
}
}
type AutoMultiConnectionTracer struct {
mct MultiConnectionTracer
local *pan.UDPAddr
remote *pan.UDPAddr
}
func NewAutoConnectionTracer(mct MultiConnectionTracer) AutoMultiConnectionTracer {
return AutoMultiConnectionTracer{mct: mct}
}
func (amct *AutoMultiConnectionTracer) StartedConnection(local, remote net.Addr, srcConnID, destConnID logging.ConnectionID) {
l := local.(pan.UDPAddr)
r := remote.(pan.UDPAddr)
amct.local = &l
amct.remote = &r
amct.mct.StartedConnection(amct.local, amct.remote, srcConnID, destConnID)
}
func (amct *AutoMultiConnectionTracer) NegotiatedVersion(chosen logging.VersionNumber, clientVersions, serverVersions []logging.VersionNumber) {
}
func (amct *AutoMultiConnectionTracer) ClosedConnection(error) {}
func (amct *AutoMultiConnectionTracer) SentTransportParameters(*logging.TransportParameters) {}
func (amct *AutoMultiConnectionTracer) ReceivedTransportParameters(*logging.TransportParameters) {}
func (amct *AutoMultiConnectionTracer) RestoredTransportParameters(parameters *logging.TransportParameters) {
}
func (amct *AutoMultiConnectionTracer) SentLongHeaderPacket(extendedHeader *logging.ExtendedHeader, count logging.ByteCount, ecn logging.ECN, ackframe *logging.AckFrame, frames []logging.Frame) {
amct.mct.SentPacket(amct.local, amct.remote, extendedHeader, count, ackframe, frames)
}
func (amct *AutoMultiConnectionTracer) SentShortHeaderPacket(*logging.ShortHeader, logging.ByteCount, logging.ECN, *logging.AckFrame, []logging.Frame) {
}
func (amct *AutoMultiConnectionTracer) ReceivedVersionNegotiationPacket(dest, src logging.ArbitraryLenConnectionID, _ []logging.VersionNumber) {
}
func (amct *AutoMultiConnectionTracer) ReceivedRetry(*logging.Header) {}
func (amct *AutoMultiConnectionTracer) ReceivedLongHeaderPacket(*logging.ExtendedHeader, logging.ByteCount, logging.ECN, []logging.Frame) {
}
func (amct *AutoMultiConnectionTracer) ReceivedShortHeaderPacket(*logging.ShortHeader, logging.ByteCount, logging.ECN, []logging.Frame) {
}
func (amct *AutoMultiConnectionTracer) BufferedPacket(logging.PacketType, logging.ByteCount) {}
func (amct *AutoMultiConnectionTracer) DroppedPacket(logging.PacketType, logging.PacketNumber, logging.ByteCount, logging.PacketDropReason) {
}
func (amct *AutoMultiConnectionTracer) UpdatedMetrics(rttStats *logging.RTTStats, cwnd, bytesInFlight logging.ByteCount, packetsInFlight int) {
amct.mct.UpdatedMetrics(amct.local, amct.remote, NewRTTStats(rttStats), cwnd, bytesInFlight, packetsInFlight)
}
func (amct *AutoMultiConnectionTracer) AcknowledgedPacket(logging.EncryptionLevel, logging.PacketNumber) {
}
func (amct *AutoMultiConnectionTracer) LostPacket(logging.EncryptionLevel, logging.PacketNumber, logging.PacketLossReason) {
}
func (amct *AutoMultiConnectionTracer) UpdatedCongestionState(logging.CongestionState) {}
func (amct *AutoMultiConnectionTracer) UpdatedPTOCount(value uint32) {}
func (amct *AutoMultiConnectionTracer) UpdatedKeyFromTLS(logging.EncryptionLevel, logging.Perspective) {
}
func (amct *AutoMultiConnectionTracer) UpdatedKey(generation logging.KeyPhase, remote bool) {}
func (amct *AutoMultiConnectionTracer) DroppedEncryptionLevel(logging.EncryptionLevel) {}
func (amct *AutoMultiConnectionTracer) DroppedKey(generation logging.KeyPhase) {}
func (amct *AutoMultiConnectionTracer) SetLossTimer(logging.TimerType, logging.EncryptionLevel, time.Time) {
}
func (amct *AutoMultiConnectionTracer) LossTimerExpired(logging.TimerType, logging.EncryptionLevel) {}
func (amct *AutoMultiConnectionTracer) LossTimerCanceled() {}
func (amct *AutoMultiConnectionTracer) ECNStateUpdated(state logging.ECNState, trigger logging.ECNStateTrigger) {
}
func (amct *AutoMultiConnectionTracer) ChoseALPN(protocol string) {}
func (amct *AutoMultiConnectionTracer) Close() {}
func (amct *AutoMultiConnectionTracer) Debug(name, msg string) {}
func (amct *AutoMultiConnectionTracer) TracerFunc(context.Context, logging.Perspective, quic.ConnectionID) *logging.ConnectionTracer {
return &logging.ConnectionTracer{
StartedConnection: amct.StartedConnection,
UpdatedMetrics: amct.UpdatedMetrics,
SentLongHeaderPacket: amct.SentLongHeaderPacket,
}
}