forked from tw-bc-group/fabric
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pvtdata_key_helper.go
49 lines (41 loc) · 1.24 KB
/
pvtdata_key_helper.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package pvtstatepurgemgmt
func (pvtdataKeys *PvtdataKeys) addAll(toAdd *PvtdataKeys) {
for ns, colls := range toAdd.Map {
for coll, keysAndHashes := range colls.Map {
for _, k := range keysAndHashes.List {
pvtdataKeys.add(ns, coll, k.Key, k.Hash)
}
}
}
}
func (pvtdataKeys *PvtdataKeys) add(ns string, coll string, key string, keyhash []byte) {
colls := pvtdataKeys.getOrCreateCollections(ns)
keysAndHashes := colls.getOrCreateKeysAndHashes(coll)
keysAndHashes.List = append(keysAndHashes.List, &KeyAndHash{Key: key, Hash: keyhash})
}
func (pvtdataKeys *PvtdataKeys) getOrCreateCollections(ns string) *Collections {
colls, ok := pvtdataKeys.Map[ns]
if !ok {
colls = newCollections()
pvtdataKeys.Map[ns] = colls
}
return colls
}
func (colls *Collections) getOrCreateKeysAndHashes(coll string) *KeysAndHashes {
keysAndHashes, ok := colls.Map[coll]
if !ok {
keysAndHashes = &KeysAndHashes{}
colls.Map[coll] = keysAndHashes
}
return keysAndHashes
}
func newPvtdataKeys() *PvtdataKeys {
return &PvtdataKeys{Map: make(map[string]*Collections)}
}
func newCollections() *Collections {
return &Collections{Map: make(map[string]*KeysAndHashes)}
}