2024-03-26 20:55:39 +01:00

31 lines
509 B
Go

package load
import (
"sync"
"golang.org/x/tools/go/packages"
)
type Guard struct {
loadMutexes map[*packages.Package]*sync.Mutex
mutex sync.Mutex
}
func NewGuard() *Guard {
return &Guard{
loadMutexes: map[*packages.Package]*sync.Mutex{},
}
}
func (g *Guard) AddMutexForPkg(pkg *packages.Package) {
g.loadMutexes[pkg] = &sync.Mutex{}
}
func (g *Guard) MutexForPkg(pkg *packages.Package) *sync.Mutex {
return g.loadMutexes[pkg]
}
func (g *Guard) Mutex() *sync.Mutex {
return &g.mutex
}