Avoid allocation storing last active time

This commit is contained in:
Paul Wells
2024-04-30 06:31:05 -07:00
parent d30f13f235
commit edb69295c0
2 changed files with 10 additions and 10 deletions
+8 -8
View File
@@ -31,8 +31,8 @@ type candidateBase struct {
resolvedAddr net.Addr
lastSent atomic.Value
lastReceived atomic.Value
lastSent atomic.Int64
lastReceived atomic.Int64
conn net.PacketConn
currAgent *Agent
@@ -409,27 +409,27 @@ func (c *candidateBase) String() string {
// LastReceived returns a time.Time indicating the last time
// this candidate was received
func (c *candidateBase) LastReceived() time.Time {
if lastReceived, ok := c.lastReceived.Load().(time.Time); ok {
return lastReceived
if lastReceived := c.lastReceived.Load(); lastReceived != 0 {
return time.Unix(0, lastReceived)
}
return time.Time{}
}
func (c *candidateBase) setLastReceived(t time.Time) {
c.lastReceived.Store(t)
c.lastReceived.Store(t.UnixNano())
}
// LastSent returns a time.Time indicating the last time
// this candidate was sent
func (c *candidateBase) LastSent() time.Time {
if lastSent, ok := c.lastSent.Load().(time.Time); ok {
return lastSent
if lastSent := c.lastSent.Load(); lastSent != 0 {
return time.Unix(0, lastSent)
}
return time.Time{}
}
func (c *candidateBase) setLastSent(t time.Time) {
c.lastSent.Store(t)
c.lastSent.Store(t.UnixNano())
}
func (c *candidateBase) seen(outbound bool) {
+2 -2
View File
@@ -186,7 +186,7 @@ func TestCandidateLastSent(t *testing.T) {
require.Equal(t, candidate.LastSent(), time.Time{})
now := time.Now()
candidate.setLastSent(now)
require.Equal(t, candidate.LastSent(), now)
require.EqualValues(t, 0, now.Sub(candidate.LastSent()))
}
func TestCandidateLastReceived(t *testing.T) {
@@ -194,7 +194,7 @@ func TestCandidateLastReceived(t *testing.T) {
require.Equal(t, candidate.LastReceived(), time.Time{})
now := time.Now()
candidate.setLastReceived(now)
require.Equal(t, candidate.LastReceived(), now)
require.EqualValues(t, 0, now.Sub(candidate.LastReceived()))
}
func TestCandidateFoundation(t *testing.T) {