63 Star 183 Fork 3

Gitee 极速下载/hyperledger-fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/hyperledger/fabric
克隆/下载
build_registry.go 1.19 KB
一键复制 编辑 原始数据 按行查看 历史
/*
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
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/mirrors/hyperledger-fabric.git
git@gitee.com:mirrors/hyperledger-fabric.git
mirrors
hyperledger-fabric
hyperledger-fabric
v2.0.0-beta

搜索帮助