coreapi/pin: Use CID's directly in maps instead of converting to strings.
License: MIT Signed-off-by: Kevin Atkinson <k@kevina.org>
Kevin Atkinson committed
Nov 29, 2018 at 17:13 UTC
b1ecb82172b311fe9d042339a2aebab3633c9d74
1 file changed
+6
-7
core/coreapi/pin.go
+6
-7
@@ -116,7 +116,7 @@ func (n *badNode) Err() error {
116
}
117
118
func (api *PinAPI) Verify(ctx context.Context) (<-chan coreiface.PinStatus, error) {
119
- visited := make(map[string]*pinStatus)
119
+ visited := make(map[cid.Cid]*pinStatus)
120
bs := api.node.Blocks.Blockstore()
121
DAG := merkledag.NewDAGService(bserv.New(bs, offline.Exchange(bs)))
122
getLinks := merkledag.GetLinksWithDAG(DAG)
@@ -124,8 +124,7 @@ func (api *PinAPI) Verify(ctx context.Context) (<-chan coreiface.PinStatus, erro
124
125
var checkPin func(root cid.Cid) *pinStatus
126
checkPin = func(root cid.Cid) *pinStatus {
127
- key := root.String()
128
- if status, ok := visited[key]; ok {
127
+ if status, ok := visited[root]; ok {
128
return status
129
}
130
@@ -133,7 +132,7 @@ func (api *PinAPI) Verify(ctx context.Context) (<-chan coreiface.PinStatus, erro
132
if err != nil {
133
status := &pinStatus{ok: false, cid: root}
134
status.badNodes = []coreiface.BadPinNode{&badNode{path: coreiface.IpldPath(root), err: err}}
136
- visited[key] = status
135
+ visited[root] = status
136
return status
137
}
138
@@ -146,7 +145,7 @@ func (api *PinAPI) Verify(ctx context.Context) (<-chan coreiface.PinStatus, erro
145
}
146
}
147
149
- visited[key] = status
148
+ visited[root] = status
149
return status
150
}
151
@@ -176,11 +175,11 @@ func (p *pinInfo) Type() string {
175
176
func (api *PinAPI) pinLsAll(typeStr string, ctx context.Context) ([]coreiface.Pin, error) {
177
179
- keys := make(map[string]*pinInfo)
178
+ keys := make(map[cid.Cid]*pinInfo)
179
180
AddToResultKeys := func(keyList []cid.Cid, typeStr string) {
181
for _, c := range keyList {
183
- keys[c.String()] = &pinInfo{
182
+ keys[c] = &pinInfo{
183
pinType: typeStr,
184
path: coreiface.IpldPath(c),
185
}