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
|
package expirable
import "time"
type ExpirableValue struct {
value interface{}
entryTime time.Time
}
func (e *ExpirableValue) Value() interface{} {
if e == nil {
return nil
}
return e.value
}
func (e *ExpirableValue) Expired(q time.Time) bool {
if e == nil {
return true
}
return e.entryTime.Before(q)
}
func NewExpirableValue(v interface{}) *ExpirableValue {
return NewExpirableValueWithOffset(v, 0)
}
func NewExpirableValueWithOffset(v interface{}, expiry uint64) *ExpirableValue {
return &ExpirableValue{
value: v,
entryTime: time.Now().Add(time.Duration(expiry)),
}
}
|