| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // Copyright (C) 2014 The Syncthing Authors.
- //
- // This Source Code Form is subject to the terms of the Mozilla Public
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
- // You can obtain one at http://mozilla.org/MPL/2.0/.
- package ignore
- import "time"
- type cache struct {
- patterns []Pattern
- entries map[string]cacheEntry
- }
- type cacheEntry struct {
- value bool
- access time.Time
- }
- func newCache(patterns []Pattern) *cache {
- return &cache{
- patterns: patterns,
- entries: make(map[string]cacheEntry),
- }
- }
- func (c *cache) clean(d time.Duration) {
- for k, v := range c.entries {
- if time.Since(v.access) > d {
- delete(c.entries, k)
- }
- }
- }
- func (c *cache) get(key string) (result, ok bool) {
- res, ok := c.entries[key]
- if ok {
- res.access = time.Now()
- c.entries[key] = res
- }
- return res.value, ok
- }
- func (c *cache) set(key string, val bool) {
- c.entries[key] = cacheEntry{val, time.Now()}
- }
- func (c *cache) len() int {
- l := len(c.entries)
- return l
- }
|