代码拉取完成,页面将自动刷新
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package container
import (
"sync"
)
type BuildRegistry struct {
mutex sync.Mutex
builds map[string]*BuildStatus
}
// BuildStatus returns a BuildStatus for the ccid, and whether the caller
// is waiting in line (true), or this build status is new and their responsibility.
// If the build status is new, then the caller must call Notify with the error
// (or nil) upon completion.
func (br *BuildRegistry) BuildStatus(ccid string) (*BuildStatus, bool) {
br.mutex.Lock()
defer br.mutex.Unlock()
if br.builds == nil {
br.builds = map[string]*BuildStatus{}
}
bs, ok := br.builds[ccid]
if !ok {
bs = NewBuildStatus()
br.builds[ccid] = bs
}
return bs, ok
}
type BuildStatus struct {
mutex sync.Mutex
doneC chan struct{}
err error
}
func NewBuildStatus() *BuildStatus {
return &BuildStatus{
doneC: make(chan struct{}),
}
}
func (bs *BuildStatus) Err() error {
bs.mutex.Lock()
defer bs.mutex.Unlock()
return bs.err
}
func (bs *BuildStatus) Notify(err error) {
bs.mutex.Lock()
defer bs.mutex.Unlock()
bs.err = err
close(bs.doneC)
}
func (bs *BuildStatus) Done() <-chan struct{} {
return bs.doneC
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。