代码拉取完成,页面将自动刷新
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package privacyenabledstate
import (
"github.com/hyperledger/fabric/common/ledger/util/leveldbhelper"
)
type metadataHint struct {
cache map[string]bool
bookkeeper *leveldbhelper.DBHandle
}
func newMetadataHint(bookkeeper *leveldbhelper.DBHandle) *metadataHint {
cache := map[string]bool{}
itr := bookkeeper.GetIterator(nil, nil)
defer itr.Release()
for itr.Next() {
namespace := string(itr.Key())
cache[namespace] = true
}
return &metadataHint{cache, bookkeeper}
}
func (h *metadataHint) metadataEverUsedFor(namespace string) bool {
return h.cache[namespace]
}
func (h *metadataHint) setMetadataUsedFlag(updates *UpdateBatch) {
batch := leveldbhelper.NewUpdateBatch()
for ns := range filterNamespacesThatHasMetadata(updates) {
if h.cache[ns] {
continue
}
h.cache[ns] = true
batch.Put([]byte(ns), []byte{})
}
h.bookkeeper.WriteBatch(batch, true)
}
func filterNamespacesThatHasMetadata(updates *UpdateBatch) map[string]bool {
namespaces := map[string]bool{}
pubUpdates, hashUpdates := updates.PubUpdates, updates.HashUpdates
// add ns for public data
for _, ns := range pubUpdates.GetUpdatedNamespaces() {
for _, vv := range updates.PubUpdates.GetUpdates(ns) {
if vv.Metadata == nil {
continue
}
namespaces[ns] = true
}
}
// add ns for private hashes
for ns, nsBatch := range hashUpdates.UpdateMap {
for _, coll := range nsBatch.GetCollectionNames() {
for _, vv := range nsBatch.GetUpdates(coll) {
if vv.Metadata == nil {
continue
}
namespaces[ns] = true
}
}
}
return namespaces
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。