| package graphdriver |
| |
| import "sync" |
| |
| // RefCounter is a generic counter for use by graphdriver Get/Put calls |
| type RefCounter struct { |
| counts map[string]int |
| mu sync.Mutex |
| } |
| |
| // NewRefCounter returns a new RefCounter |
| func NewRefCounter() *RefCounter { |
| return &RefCounter{counts: make(map[string]int)} |
| } |
| |
| // Increment increaes the ref count for the given id and returns the current count |
| func (c *RefCounter) Increment(id string) int { |
| c.mu.Lock() |
| c.counts[id]++ |
| count := c.counts[id] |
| c.mu.Unlock() |
| return count |
| } |
| |
| // Decrement decreases the ref count for the given id and returns the current count |
| func (c *RefCounter) Decrement(id string) int { |
| c.mu.Lock() |
| c.counts[id]-- |
| count := c.counts[id] |
| c.mu.Unlock() |
| return count |
| } |