1
Fork 0

Implement packetcache.GetLast.

This commit is contained in:
Juliusz Chroboczek 2020-06-08 21:55:38 +02:00
parent da97560cb3
commit 0f96f94417
2 changed files with 19 additions and 0 deletions

View File

@ -135,6 +135,21 @@ func (cache *Cache) Get(seqno uint16, result []byte) uint16 {
return 0
}
func (cache *Cache) GetLast(result []byte) uint16 {
cache.mu.Lock()
defer cache.mu.Unlock()
i := cache.tail - 1
if i >= uint16(len(cache.entries)) {
i = 0
}
return uint16(copy(
result[:cache.entries[i].length],
cache.entries[i].buf[:]),
)
}
func (cache *Cache) GetAt(seqno uint16, index uint16, result []byte) uint16 {
cache.mu.Lock()
defer cache.mu.Unlock()

View File

@ -33,6 +33,10 @@ func TestCache(t *testing.T) {
if !bytes.Equal(buf[:l], buf1) {
t.Errorf("Couldn't get 13 at %v", i1)
}
l = cache.GetLast(buf)
if !bytes.Equal(buf[:l], buf2) {
t.Errorf("Couldn't get last")
}
l = cache.Get(17, buf)
if !bytes.Equal(buf[:l], buf2) {