registry

package
v0.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 29, 2022 License: Apache-2.0, MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInProgress          = errors.New("discovery already in progress")
	ErrCannotPublish       = errors.New("publisher not allowed to publish to other provider")
	ErrNotAllowed          = errors.New("peer not allowed by policy")
	ErrNoDiscovery         = errors.New("discovery not available")
	ErrNotVerified         = errors.New("provider cannot be verified")
	ErrPublisherNotAllowed = errors.New("publisher not allowed by policy")
	ErrTooSoon             = errors.New("not enough time since previous discovery")
	ErrNoAssigner          = errors.New("not configured to work with assigner service")
)

Functions

This section is empty.

Types

type ContextualExtendedProviders added in v0.5.0

type ContextualExtendedProviders struct {
	// Providers contains a list of context-level extended providers
	Providers []ExtendedProviderInfo
	// Override defines whether chain-level extended providers should be used for
	// this ContextID. If true, then the chain-level extended providers are going to be ignored.
	Override bool
	// ContextID deifnes the context ID that the extended providers have been published for
	ContextID []byte `json:",omitempty"`
}

ContextualExtendedProviders holds infromation about a context-level extended providers. These can either replace or compliment (union) the chain-level extended providers, which is driven by the Override flag.

type ExtendedProviderInfo added in v0.5.0

type ExtendedProviderInfo struct {
	// PeerID contains a peer.ID of the extended provider
	PeerID peer.ID
	// Metadata contains a metadata override for this provider within the extended provider context.
	// If extended provider's metadata hasn't been specified - the main provider's
	// metadata is going to be used instead.
	Metadata []byte `json:",omitempty"`
	// Addrs contains advertised multiaddresses for this extended provider
	Addrs []multiaddr.Multiaddr
}

ExtendedProviderInfo is an immutable data structure that holds infromation about an extended provider.

func (*ExtendedProviderInfo) MarshalJSON added in v0.5.0

func (p *ExtendedProviderInfo) MarshalJSON() ([]byte, error)

func (*ExtendedProviderInfo) UnmarshalJSON added in v0.5.0

func (p *ExtendedProviderInfo) UnmarshalJSON(data []byte) error

type ExtendedProviders added in v0.5.0

type ExtendedProviders struct {
	// Providers contains a chain-level set of extended providers
	Providers []ExtendedProviderInfo `json:",omitempty"`
	// ContextualProviders contains a context-level sets of extended providers
	ContextualProviders map[string]ContextualExtendedProviders `json:",omitempty"`
}

ExtendedProviders contains chain-level and context-level extended provider sets

type ProviderInfo

type ProviderInfo struct {
	// AddrInfo contains a peer.ID and set of Multiaddr addresses.
	AddrInfo peer.AddrInfo
	// DiscoveryAddr is the address that is used for discovery of the provider.
	DiscoveryAddr string `json:",omitempty"`
	// LastAdvertisement identifies the latest advertisement the indexer has ingested.
	LastAdvertisement cid.Cid `json:",omitempty"`
	// LastAdvertisementTime is the time the latest advertisement was received.
	LastAdvertisementTime time.Time `json:",omitempty"`
	// Publisher contains the ID of the provider info publisher.
	Publisher peer.ID `json:",omitempty"`
	// PublisherAddr contains the last seen publisher multiaddr.
	PublisherAddr multiaddr.Multiaddr `json:",omitempty"`
	// ExtendedProviders registered for that provider
	ExtendedProviders *ExtendedProviders `json:",omitempty"`
	// contains filtered or unexported fields
}

ProviderInfo is an immutable data structure that holds information about a provider. A ProviderInfo instance is never modified, but rather a new one is created to update its contents. This means existing references remain valid.

func (*ProviderInfo) Deleted added in v0.4.18

func (p *ProviderInfo) Deleted() bool

func (*ProviderInfo) Inactive added in v0.4.18

func (p *ProviderInfo) Inactive() bool

func (*ProviderInfo) MarshalJSON added in v0.4.1

func (p *ProviderInfo) MarshalJSON() ([]byte, error)

func (*ProviderInfo) UnmarshalJSON added in v0.4.1

func (p *ProviderInfo) UnmarshalJSON(data []byte) error

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

Registry stores information about discovered providers

func NewRegistry

func NewRegistry(ctx context.Context, cfg config.Discovery, dstore datastore.Datastore, discoverer discovery.Discoverer) (*Registry, error)

NewRegistry creates a new provider registry, giving it provider policy configuration, a datastore to persist provider data, and a Discoverer interface. The context is only used for cancellation of this function.

func (*Registry) AllProviderInfo

func (r *Registry) AllProviderInfo() []*ProviderInfo

AllProviderInfo returns information for all registered providers that are active and allowed.

func (*Registry) AllowPeer added in v0.2.0

func (r *Registry) AllowPeer(peerID peer.ID) bool

AllowPeer configures the policy to allow messages published by the identified peer. Returns true if policy changed. This configuration is not persisted across indexer restarts. Update the indexer config file to persist the change.

func (*Registry) Allowed added in v0.4.7

func (r *Registry) Allowed(peerID peer.ID) bool

Allowed checks if the peer is allowed by policy. If configured to work with an assigner service, then the peer must also be assigned to the indexer to be allowed.

func (*Registry) AssignPeer added in v0.5.2

func (r *Registry) AssignPeer(peerID peer.ID) error

AssignPeer assigns the peer to this indexer if using an assigner service. This allows the indexer to accept announce messages having this peer as a publisher. The assignment is persisted in the datastore.

func (*Registry) BlockPeer added in v0.2.0

func (r *Registry) BlockPeer(peerID peer.ID) bool

BlockPeer configures the policy to block messages published by the identified peer. Returns true if policy changed. This configuration is not persisted across indexer restarts. Update the indexer config file to persist the change.

func (*Registry) CheckSequence

func (r *Registry) CheckSequence(peerID peer.ID, seq uint64) error

func (*Registry) Close

func (r *Registry) Close() error

Close waits for any pending discoverer to finish and then stops the registry

func (*Registry) Discover

func (r *Registry) Discover(peerID peer.ID, discoveryAddr string, sync bool) error

Discover begins the process of discovering and verifying a provider. The discovery address is used to lookup the provider's information.

TODO: To support multiple discoverer methods (lotus, IPFS, etc.) there need to be information that is part of, or in addition to, the discoveryAddr to indicate where/how discovery is done.

func (*Registry) FilterIPsEnabled added in v0.4.21

func (r *Registry) FilterIPsEnabled() bool

FilterIPsEnabled returns true if IP address filtering is enabled.

func (*Registry) ImportProviders added in v0.4.17

func (r *Registry) ImportProviders(ctx context.Context, fromURL *url.URL) (int, error)

ImportProviders reads providers from another indexer and registers any that are not already registered. Returns the count of newly registered providers.

func (*Registry) IsRegistered

func (r *Registry) IsRegistered(providerID peer.ID) bool

IsRegistered checks if the provider is in the registry

func (*Registry) ListAssignedPeers added in v0.5.1

func (r *Registry) ListAssignedPeers() ([]peer.ID, error)

ListAssignedPeers returns list of assigned peer IDs, when the indexer is configured to work with an assigner service. Otherwise returns error.

func (*Registry) ProviderInfo

func (r *Registry) ProviderInfo(providerID peer.ID) (*ProviderInfo, bool)

ProviderInfo returns information for a registered provider.

func (*Registry) PublishAllowed added in v0.4.7

func (r *Registry) PublishAllowed(publisherID, providerID peer.ID) bool

PublishAllowed checks if a peer is allowed to publish for other providers.

func (*Registry) RemoveProvider added in v0.4.18

func (r *Registry) RemoveProvider(ctx context.Context, providerID peer.ID) error

func (*Registry) Saw added in v0.4.21

func (r *Registry) Saw(provider peer.ID)

Saw indicates that a provider was seen.

func (*Registry) SetPolicy added in v0.2.0

func (r *Registry) SetPolicy(policyCfg config.Policy) error

func (*Registry) SyncChan added in v0.3.6

func (r *Registry) SyncChan() <-chan *ProviderInfo

func (*Registry) UnassignPeer added in v0.5.2

func (r *Registry) UnassignPeer(peerID peer.ID) error

UnassignPeer assigns the peer to this indexer if using an assigner service. This allows the indexer to accept announce messages having this peer as a publisher. The assignment is persisted in the datastore.

func (*Registry) Update added in v0.5.1

func (r *Registry) Update(ctx context.Context, provider, publisher peer.AddrInfo, adCid cid.Cid, extendedProviders *ExtendedProviders) error

Update attempts to update the registry's provider information. If publisher has a valid ID, then the supplied publisher data replaces the provider's previous publisher information.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL