mirror of
https://github.com/ipfs/kubo.git
synced 2026-03-13 12:18:00 +08:00
40 lines
732 B
Go
40 lines
732 B
Go
package pin
|
|
|
|
import (
|
|
key "gx/ipfs/QmYEoKZXHoAToWfhGF3vryhMn3WWhE1o2MasQ8uzY5iDi9/go-key"
|
|
)
|
|
|
|
type indirectPin struct {
|
|
refCounts map[key.Key]uint64
|
|
}
|
|
|
|
func newIndirectPin() *indirectPin {
|
|
return &indirectPin{
|
|
refCounts: make(map[key.Key]uint64),
|
|
}
|
|
}
|
|
|
|
func (i *indirectPin) Increment(k key.Key) {
|
|
i.refCounts[k]++
|
|
}
|
|
|
|
func (i *indirectPin) Decrement(k key.Key) {
|
|
if i.refCounts[k] == 0 {
|
|
log.Warningf("pinning: bad call: asked to unpin nonexistent indirect key: %v", k)
|
|
return
|
|
}
|
|
i.refCounts[k]--
|
|
if i.refCounts[k] == 0 {
|
|
delete(i.refCounts, k)
|
|
}
|
|
}
|
|
|
|
func (i *indirectPin) HasKey(k key.Key) bool {
|
|
_, found := i.refCounts[k]
|
|
return found
|
|
}
|
|
|
|
func (i *indirectPin) GetRefs() map[key.Key]uint64 {
|
|
return i.refCounts
|
|
}
|