mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-26 00:25:17 +00:00
35 lines
735 B
Go
35 lines
735 B
Go
|
package providers
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"github.com/libp2p/go-libp2p/core/peer"
|
||
|
)
|
||
|
|
||
|
// A providerSet has the list of providers and the time that they were added
|
||
|
// It is used as an intermediary data struct between what is stored in the datastore
|
||
|
// and the list of providers that get passed to the consumer of a .GetProviders call
|
||
|
type providerSet struct {
|
||
|
providers []peer.ID
|
||
|
set map[peer.ID]time.Time
|
||
|
}
|
||
|
|
||
|
func newProviderSet() *providerSet {
|
||
|
return &providerSet{
|
||
|
set: make(map[peer.ID]time.Time),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (ps *providerSet) Add(p peer.ID) {
|
||
|
ps.setVal(p, time.Now())
|
||
|
}
|
||
|
|
||
|
func (ps *providerSet) setVal(p peer.ID, t time.Time) {
|
||
|
_, found := ps.set[p]
|
||
|
if !found {
|
||
|
ps.providers = append(ps.providers, p)
|
||
|
}
|
||
|
|
||
|
ps.set[p] = t
|
||
|
}
|