63 Star 183 Fork 3

Gitee 极速下载/hyperledger-fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/hyperledger/fabric
克隆/下载
msgs.go 1.61 KB
一键复制 编辑 原始数据 按行查看 历史
yacovm 提交于 2017-07-22 00:35 . [FAB-5425] Change gossip to SPDX license
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package util
import (
"sync"
"github.com/hyperledger/fabric/gossip/common"
proto "github.com/hyperledger/fabric/protos/gossip"
)
// MembershipStore struct which encapsulates
// membership message store abstraction
type MembershipStore struct {
m map[string]*proto.SignedGossipMessage
sync.RWMutex
}
// NewMembershipStore creates new membership store instance
func NewMembershipStore() *MembershipStore {
return &MembershipStore{m: make(map[string]*proto.SignedGossipMessage)}
}
// MsgByID returns a message stored by a certain ID, or nil
// if such an ID isn't found
func (m *MembershipStore) MsgByID(pkiID common.PKIidType) *proto.SignedGossipMessage {
m.RLock()
defer m.RUnlock()
if msg, exists := m.m[string(pkiID)]; exists {
return msg
}
return nil
}
// Size of the membership store
func (m *MembershipStore) Size() int {
m.RLock()
defer m.RUnlock()
return len(m.m)
}
// Put associates msg with the given pkiID
func (m *MembershipStore) Put(pkiID common.PKIidType, msg *proto.SignedGossipMessage) {
m.Lock()
defer m.Unlock()
m.m[string(pkiID)] = msg
}
// Remove removes a message with a given pkiID
func (m *MembershipStore) Remove(pkiID common.PKIidType) {
m.Lock()
defer m.Unlock()
delete(m.m, string(pkiID))
}
// ToSlice returns a slice backed by the elements
// of the MembershipStore
func (m *MembershipStore) ToSlice() []*proto.SignedGossipMessage {
m.RLock()
defer m.RUnlock()
members := make([]*proto.SignedGossipMessage, len(m.m))
i := 0
for _, member := range m.m {
members[i] = member
i++
}
return members
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/mirrors/hyperledger-fabric.git
git@gitee.com:mirrors/hyperledger-fabric.git
mirrors
hyperledger-fabric
hyperledger-fabric
v1.4.7

搜索帮助