Files
wehub-resource-sync 498b235461
Build and test / Build and test AMD64 Ubuntu 22.04 (push) Failing after 0s
Publish Builder / amazonlinux2023 (push) Failing after 1s
Build and test / UT for Go (push) Has been skipped
Publish KRTE Images / KRTE (push) Failing after 1s
Build and test / Integration Test (push) Has been skipped
Build and test / Upload Code Coverage (push) Has been skipped
Publish Builder / rockylinux9 (push) Failing after 1s
Publish Builder / ubuntu22.04 (push) Failing after 0s
Publish Builder / ubuntu24.04 (push) Failing after 0s
Publish Gpu Builder / publish-gpu-builder (push) Failing after 1s
Publish Test Images / PyTest (push) Failing after 0s
Build and test / UT for Cpp (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:31:17 +08:00

46 lines
1.0 KiB
Go

package state
type LoadStateLockGuard interface {
Done(err error)
}
// newLoadStateLockGuard creates a LoadStateGuard.
func newLoadStateLockGuard(ls *LoadStateLock, original loadStateEnum, target loadStateEnum) *loadStateLockGuard {
return &loadStateLockGuard{
ls: ls,
original: original,
target: target,
}
}
// loadStateLockGuard is a guard to update the state of LoadState.
type loadStateLockGuard struct {
ls *LoadStateLock
original loadStateEnum
target loadStateEnum
}
// Done updates the state of LoadState to target state.
func (g *loadStateLockGuard) Done(err error) {
g.ls.cv.L.Lock()
g.ls.cv.Broadcast()
defer g.ls.cv.L.Unlock()
if err != nil {
g.ls.state = g.original
return
}
g.ls.state = g.target
}
// newNopLoadStateLockGuard creates a LoadStateLockGuard that does nothing.
func newNopLoadStateLockGuard() LoadStateLockGuard {
return nopLockGuard{}
}
// nopLockGuard is a guard that does nothing.
type nopLockGuard struct{}
// Done does nothing.
func (nopLockGuard) Done(err error) {}