add io.Closer interface and implementation to Peerstore.

This commit is contained in:
Raúl Kripalani
2019-02-19 11:45:32 +00:00
parent 4e7d772db3
commit 135471f291
4 changed files with 29 additions and 13 deletions

View File

@@ -2,6 +2,7 @@ package peerstore
import (
"fmt"
"io"
"sync"
peer "github.com/libp2p/go-libp2p-peer"
@@ -31,6 +32,19 @@ func NewPeerstore(kb KeyBook, ab AddrBook, md PeerMetadata) Peerstore {
}
}
func (ps *peerstore) Close() (err error) {
if cl, ok := ps.KeyBook.(io.Closer); ok {
cl.Close()
}
if cl, ok := ps.AddrBook.(io.Closer); ok {
cl.Close()
}
if cl, ok := ps.PeerMetadata.(io.Closer); ok {
cl.Close()
}
return nil
}
func (ps *peerstore) Peers() peer.IDSlice {
set := map[peer.ID]struct{}{}
for _, p := range ps.PeersWithKeys() {