33 lines
690 B
Go
33 lines
690 B
Go
|
package timecache
|
||
|
|
||
|
import "time"
|
||
|
|
||
|
type Strategy uint8
|
||
|
|
||
|
const (
|
||
|
Strategy_FirstSeen Strategy = iota
|
||
|
Strategy_LastSeen
|
||
|
)
|
||
|
|
||
|
type TimeCache interface {
|
||
|
Add(string)
|
||
|
Has(string) bool
|
||
|
}
|
||
|
|
||
|
// NewTimeCache defaults to the original ("first seen") cache implementation
|
||
|
func NewTimeCache(span time.Duration) TimeCache {
|
||
|
return NewTimeCacheWithStrategy(Strategy_FirstSeen, span)
|
||
|
}
|
||
|
|
||
|
func NewTimeCacheWithStrategy(strategy Strategy, span time.Duration) TimeCache {
|
||
|
switch strategy {
|
||
|
case Strategy_FirstSeen:
|
||
|
return newFirstSeenCache(span)
|
||
|
case Strategy_LastSeen:
|
||
|
return newLastSeenCache(span)
|
||
|
default:
|
||
|
// Default to the original time cache implementation
|
||
|
return newFirstSeenCache(span)
|
||
|
}
|
||
|
}
|