add tracing for sent and received packets

This commit is contained in:
Marten Seemann
2019-04-05 10:55:31 +09:00
parent 8926531f7e
commit 267d11ee66
12 changed files with 314 additions and 0 deletions

View File

@@ -39,6 +39,9 @@ type SentPacketHandler interface {
GetAlarmTimeout() time.Time
OnAlarm() error
// report some congestion statistics. For tracing only.
GetStats() *State
}
// ReceivedPacketHandler handles ACKs needed to send for incoming packets
@@ -50,3 +53,12 @@ type ReceivedPacketHandler interface {
GetAlarmTimeout() time.Time
GetAckFrame(protocol.EncryptionLevel) *wire.AckFrame
}
type State struct {
MinRTT time.Duration
SmoothedRTT time.Duration
LatestRTT time.Duration
BytesInFlight protocol.ByteCount
CongestionWindow protocol.ByteCount
}

View File

@@ -670,3 +670,13 @@ func (h *sentPacketHandler) ResetForRetry() error {
h.updateLossDetectionAlarm()
return nil
}
func (h *sentPacketHandler) GetStats() *State {
return &State{
MinRTT: h.rttStats.MinRTT(),
SmoothedRTT: h.rttStats.SmoothedOrInitialRTT(),
LatestRTT: h.rttStats.LatestRTT(),
BytesInFlight: h.bytesInFlight,
CongestionWindow: h.congestion.GetCongestionWindow(),
}
}

View File

@@ -106,6 +106,20 @@ func (mr *MockSentPacketHandlerMockRecorder) GetLowestPacketNotConfirmedAcked()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLowestPacketNotConfirmedAcked", reflect.TypeOf((*MockSentPacketHandler)(nil).GetLowestPacketNotConfirmedAcked))
}
// GetStats mocks base method
func (m *MockSentPacketHandler) GetStats() *ackhandler.State {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetStats")
ret0, _ := ret[0].(*ackhandler.State)
return ret0
}
// GetStats indicates an expected call of GetStats
func (mr *MockSentPacketHandlerMockRecorder) GetStats() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStats", reflect.TypeOf((*MockSentPacketHandler)(nil).GetStats))
}
// OnAlarm mocks base method
func (m *MockSentPacketHandler) OnAlarm() error {
m.ctrl.T.Helper()