github.com/onflow/flow-go@v0.35.7-crescendo-preview.23-atree-inlining/module/id/fixed_provider.go (about) 1 package id 2 3 import ( 4 "github.com/libp2p/go-libp2p/core/peer" 5 6 "github.com/onflow/flow-go/model/flow" 7 "github.com/onflow/flow-go/module" 8 "github.com/onflow/flow-go/network/p2p/keyutils" 9 ) 10 11 // FixedIdentifierProvider implements an IdentifierProvider which provides a fixed list 12 // of identifiers. 13 type FixedIdentifierProvider struct { 14 identifiers flow.IdentifierList 15 } 16 17 func NewFixedIdentifierProvider(identifiers flow.IdentifierList) *FixedIdentifierProvider { 18 return &FixedIdentifierProvider{identifiers} 19 } 20 21 func (p *FixedIdentifierProvider) Identifiers() flow.IdentifierList { 22 return p.identifiers 23 } 24 25 // FixedIdentityProvider implements an IdentityProvider which provides a fixed list 26 // of identities. 27 type FixedIdentityProvider struct { 28 identities flow.IdentityList 29 } 30 31 var _ module.IdentityProvider = (*FixedIdentityProvider)(nil) 32 33 func NewFixedIdentityProvider(identities flow.IdentityList) *FixedIdentityProvider { 34 return &FixedIdentityProvider{identities} 35 } 36 37 func (p *FixedIdentityProvider) Identities(filter flow.IdentityFilter[flow.Identity]) flow.IdentityList { 38 return p.identities.Filter(filter) 39 } 40 41 func (p *FixedIdentityProvider) ByNodeID(flowID flow.Identifier) (*flow.Identity, bool) { 42 for _, v := range p.identities { 43 if v.ID() == flowID { 44 return v, true 45 } 46 } 47 return nil, false 48 } 49 50 func (p *FixedIdentityProvider) ByPeerID(peerID peer.ID) (*flow.Identity, bool) { 51 for _, v := range p.identities { 52 if id, err := keyutils.PeerIDFromFlowPublicKey(v.NetworkPubKey); err == nil { 53 if id == peerID { 54 return v, true 55 } 56 } 57 58 } 59 return nil, false 60 61 }