Documentation ¶
Overview ¶
Package ipfsutil contains helpers around IPFS (logging, datastore, networking, core API, ...).
Index ¶
- Constants
- Variables
- func CreateMockedRepo(dstore ipfs_ds.Batching) (ipfs_repo.Repo, error)
- func CustomRoutingOption(mode p2p_dht.ModeOpt, opts ...p2p_dht.Option) ...
- func DiscoveryHandler(ctx context.Context, l *zap.Logger, h host.Host) p2p_mdns.Notifee
- func EnableConnLogger(ctx context.Context, logger *zap.Logger, h host.Host)
- func FullClose(s network.Stream) error
- func GetMulticastInterfaces() ([]net.Interface, error)
- func InjectPubSubAPI(api ipfs_interface.CoreAPI, ps ipfs_interface.PubSubAPI) ipfs_interface.CoreAPI
- func LoadRepoFromPath(path string, key []byte, salt []byte) (ipfs_repo.Repo, error)
- func MultiaddrIsEqual(a Multiaddrs, b Multiaddrs) bool
- func NewDatastoreKeystore(ds datastore.Datastore) keystore.Keystore
- func NewIPFSMobile(ctx context.Context, repo *ipfs_mobile.RepoMobile, opts *MobileOptions) (*ipfs_mobile.IpfsMobile, error)
- func NewMdnsService(logger *zap.Logger, host host.Host, serviceName string, ...) p2p_mdns.Service
- func NewPubSubAPI(ctx context.Context, logger *zap.Logger, ps *p2p_pubsub.PubSub) ipfs_interface.PubSubAPI
- func OptionLocalRecord(node *ipfs_core.IpfsNode, api ipfs_interface.CoreAPI) error
- func ParseAddr(addr string) (ma.Multiaddr, error)
- func ParseAddrs(addrs ...string) ([]ma.Multiaddr, error)
- func ParseAndResolveIpfsAddr(ctx context.Context, addr string) (*peer.AddrInfo, error)
- func ParseAndResolveMaddrs(ctx context.Context, logger *zap.Logger, addrs []string) ([]*peer.AddrInfo, error)
- func ResetExistingRepoIdentity(repo ipfs_repo.Repo, path string, key []byte, salt []byte) (ipfs_repo.Repo, error)
- func SetNetDriver(n Net)
- func TestingRDVP(ctx context.Context, t testing.TB, h host.Host) (*rendezvous.RendezvousService, func())
- func TestingRepo(t testing.TB, ctx context.Context, datastore ds.Datastore) ipfs_repo.Repo
- type BandwidthCollector
- type BertyConnManager
- func (c *BertyConnManager) GetPeerScore(p peer.ID) (score int, exist bool)
- func (c *BertyConnManager) RegisterEventBus(bus event.Bus) (err error)
- func (c *BertyConnManager) TagPeer(p peer.ID, tag string, score int)
- func (c *BertyConnManager) UntagPeer(p peer.ID, tag string)
- func (c *BertyConnManager) UpsertTag(p peer.ID, tag string, upsert func(int) int)
- type Config
- type ConnLifecycle
- type ConnMgr
- type CoreAPIMock
- type EventMonitor
- type EventTracer
- type EvtPeerTag
- type EvtPubSubTopic
- type ExtendedCoreAPI
- type HostCollector
- func (cc *HostCollector) ClosedStream(n network.Network, s network.Stream)
- func (cc *HostCollector) Collect(cmetric chan<- prometheus.Metric)
- func (cc *HostCollector) Connected(n network.Network, c network.Conn)
- func (cc *HostCollector) Describe(ch chan<- *prometheus.Desc)
- func (cc *HostCollector) Disconnected(n network.Network, c network.Conn)
- func (cc *HostCollector) Listen(network.Network, ma.Multiaddr)
- func (cc *HostCollector) ListenClose(network.Network, ma.Multiaddr)
- func (cc *HostCollector) OpenedStream(n network.Network, s network.Stream)
- type LocalRecord
- func (lr *LocalRecord) ClosedStream(network.Network, network.Stream)
- func (lr *LocalRecord) Connected(net network.Network, c network.Conn)
- func (lr *LocalRecord) Disconnected(network.Network, network.Conn)
- func (lr *LocalRecord) Listen(network.Network, ma.Multiaddr)
- func (lr *LocalRecord) ListenClose(network.Network, ma.Multiaddr)
- func (lr *LocalRecord) OpenedStream(network.Network, network.Stream)
- type MobileOptions
- type Multiaddrs
- type Net
- type NetAddrs
- type NetInterface
- type PeeringService
- type PubSubAPI
- func (ps *PubSubAPI) Ls(ctx context.Context) ([]string, error)
- func (ps *PubSubAPI) Peers(ctx context.Context, opts ...ipfs_iopts.PubSubPeersOption) ([]p2p_peer.ID, error)
- func (ps *PubSubAPI) Publish(ctx context.Context, topic string, msg []byte) error
- func (ps *PubSubAPI) Subscribe(ctx context.Context, topic string, opts ...ipfs_iopts.PubSubSubscribeOption) (ipfs_interface.PubSubSubscription, error)
- type PubsubMonitor
- type TestingAPIOpts
- type TypeTagAction
Constants ¶
const DefaultCloseTimeout = time.Second * 5
const (
MDNSServiceName = p2p_mdns.ServiceName
)
const ( // MaximumReconnectingDelay define the maximum time a peer is able to // reconnect, if reached peer will be remove from the store MaximumReconnectingDelay = time.Second * 30 )
Seed the random number generator.
We don't need good randomness, but we do need randomness.
const UnknownProtocol = "UnknownProtocol"
Variables ¶
var ( ConnLifecycleGracePeriod = time.Second ConnLifecyclePingTimeout = time.Second * 5 ConnPeerOfInterestMinScore = 20 )
var DefaultSwarmListeners = []string{
"/ip4/0.0.0.0/tcp/0",
"/ip6/::/tcp/0",
}
var DiscoveryTimeout = time.Second * 30
var ErrExpectedEOF = errors.New("red data when expecting EOF")
Functions ¶
func CreateMockedRepo ¶ added in v2.57.1
func CustomRoutingOption ¶ added in v2.257.0
func DiscoveryHandler ¶ added in v2.346.0
func EnableConnLogger ¶ added in v2.97.0
func GetMulticastInterfaces ¶ added in v2.354.3
func InjectPubSubAPI ¶ added in v2.109.0
func InjectPubSubAPI(api ipfs_interface.CoreAPI, ps ipfs_interface.PubSubAPI) ipfs_interface.CoreAPI
func LoadRepoFromPath ¶ added in v2.57.1
func MultiaddrIsEqual ¶ added in v2.210.1
func MultiaddrIsEqual(a Multiaddrs, b Multiaddrs) bool
MultiaddrIsEqual return true if both slice are equal
func NewIPFSMobile ¶ added in v2.257.0
func NewIPFSMobile(ctx context.Context, repo *ipfs_mobile.RepoMobile, opts *MobileOptions) (*ipfs_mobile.IpfsMobile, error)
func NewMdnsService ¶ added in v2.346.0
func NewPubSubAPI ¶ added in v2.109.0
func NewPubSubAPI(ctx context.Context, logger *zap.Logger, ps *p2p_pubsub.PubSub) ipfs_interface.PubSubAPI
func OptionLocalRecord ¶ added in v2.94.0
func OptionLocalRecord(node *ipfs_core.IpfsNode, api ipfs_interface.CoreAPI) error
OptionLocalRecord is given to CoreAPIOption.Options when the ipfs node setup
func ParseAndResolveIpfsAddr ¶ added in v2.53.1
func ParseAndResolveMaddrs ¶ added in v2.278.0
func ResetExistingRepoIdentity ¶ added in v2.322.0
func SetNetDriver ¶ added in v2.346.0
func SetNetDriver(n Net)
func TestingRDVP ¶ added in v2.50.0
func TestingRDVP(ctx context.Context, t testing.TB, h host.Host) (*rendezvous.RendezvousService, func())
Types ¶
type BandwidthCollector ¶ added in v2.182.0
type BandwidthCollector struct {
// contains filtered or unexported fields
}
func NewBandwidthCollector ¶ added in v2.182.0
func NewBandwidthCollector(reporter *metrics.BandwidthCounter) *BandwidthCollector
func (*BandwidthCollector) Collect ¶ added in v2.182.0
func (bc *BandwidthCollector) Collect(cmetric chan<- prometheus.Metric)
func (*BandwidthCollector) Describe ¶ added in v2.182.0
func (bc *BandwidthCollector) Describe(ch chan<- *prometheus.Desc)
type BertyConnManager ¶ added in v2.414.0
type BertyConnManager struct { connmgr.ConnManager // contains filtered or unexported fields }
keep track of peer of interest
func NewBertyConnManager ¶ added in v2.414.0
func NewBertyConnManager(logger *zap.Logger, cm connmgr.ConnManager) *BertyConnManager
func (*BertyConnManager) GetPeerScore ¶ added in v2.414.0
func (c *BertyConnManager) GetPeerScore(p peer.ID) (score int, exist bool)
func (*BertyConnManager) RegisterEventBus ¶ added in v2.414.0
func (c *BertyConnManager) RegisterEventBus(bus event.Bus) (err error)
func (*BertyConnManager) TagPeer ¶ added in v2.414.0
func (c *BertyConnManager) TagPeer(p peer.ID, tag string, score int)
TagPeer tags a peer with a string, associating a weight with the tag.
func (*BertyConnManager) UntagPeer ¶ added in v2.414.0
func (c *BertyConnManager) UntagPeer(p peer.ID, tag string)
Untag removes the tagged value from the peer.
type ConnLifecycle ¶ added in v2.414.0
type ConnLifecycle struct { connmgr.ConnManager // contains filtered or unexported fields }
func NewConnLifecycle ¶ added in v2.414.0
type ConnMgr ¶ added in v2.70.0
type ConnMgr interface { connmgr.ConnManager }
type CoreAPIMock ¶
type CoreAPIMock interface { API() ExtendedCoreAPI PubSub() *pubsub.PubSub Tinder() *tinder.Service MockNetwork() p2p_mocknet.Mocknet MockNode() *ipfs_core.IpfsNode Close() }
CoreAPIMock implements ipfs.CoreAPI and adds some debugging helpers
func TestingCoreAPI ¶
func TestingCoreAPI(ctx context.Context, t testing.TB) (CoreAPIMock, func())
TestingCoreAPI returns a fully initialized mocked Core API. If you want to do some tests involving multiple peers you should use `TestingCoreAPIUsingMockNet` with the same mocknet instead.
func TestingCoreAPIUsingMockNet ¶
func TestingCoreAPIUsingMockNet(ctx context.Context, t testing.TB, opts *TestingAPIOpts) (CoreAPIMock, func())
TestingCoreAPIUsingMockNet returns a fully initialized mocked Core API with the given mocknet
type EventMonitor ¶ added in v2.210.1
type EventMonitor int
const ( TypeEventMonitorPeerUnknown EventMonitor = iota TypeEventMonitorPeerJoined TypeEventMonitorPeerLeft )
type EventTracer ¶ added in v2.210.1
func NewPubsubMonitor ¶ added in v2.210.1
type EvtPeerTag ¶ added in v2.414.0
type EvtPubSubTopic ¶ added in v2.210.1
type EvtPubSubTopic struct { EventType EventMonitor Topic string PeerID peer.ID }
type ExtendedCoreAPI ¶ added in v2.59.0
type ExtendedCoreAPI interface { ipfs_interface.CoreAPI ipfs_host.Host ConnMgr() ConnMgr }
func InjectPubSubCoreAPIExtendedAdapter ¶ added in v2.302.0
func InjectPubSubCoreAPIExtendedAdapter(exapi ExtendedCoreAPI, ps ipfs_interface.PubSubAPI) ExtendedCoreAPI
func NewExtendedCoreAPI ¶ added in v2.59.0
func NewExtendedCoreAPI(host ipfs_host.Host, api ipfs_interface.CoreAPI) ExtendedCoreAPI
func NewExtendedCoreAPIFromNode ¶ added in v2.257.0
func NewExtendedCoreAPIFromNode(node *ipfs_core.IpfsNode) (ExtendedCoreAPI, error)
type HostCollector ¶ added in v2.182.0
type HostCollector struct {
// contains filtered or unexported fields
}
func NewHostCollector ¶ added in v2.182.0
func NewHostCollector(h host.Host) *HostCollector
func (*HostCollector) ClosedStream ¶ added in v2.182.0
func (cc *HostCollector) ClosedStream(n network.Network, s network.Stream)
func (*HostCollector) Collect ¶ added in v2.182.0
func (cc *HostCollector) Collect(cmetric chan<- prometheus.Metric)
func (*HostCollector) Connected ¶ added in v2.182.0
func (cc *HostCollector) Connected(n network.Network, c network.Conn)
func (*HostCollector) Describe ¶ added in v2.182.0
func (cc *HostCollector) Describe(ch chan<- *prometheus.Desc)
func (*HostCollector) Disconnected ¶ added in v2.182.0
func (cc *HostCollector) Disconnected(n network.Network, c network.Conn)
func (*HostCollector) Listen ¶ added in v2.182.0
func (cc *HostCollector) Listen(network.Network, ma.Multiaddr)
func (*HostCollector) ListenClose ¶ added in v2.182.0
func (cc *HostCollector) ListenClose(network.Network, ma.Multiaddr)
func (*HostCollector) OpenedStream ¶ added in v2.182.0
func (cc *HostCollector) OpenedStream(n network.Network, s network.Stream)
type LocalRecord ¶ added in v2.94.0
type LocalRecord struct {
// contains filtered or unexported fields
}
func (*LocalRecord) ClosedStream ¶ added in v2.94.0
func (lr *LocalRecord) ClosedStream(network.Network, network.Stream)
called when a stream closed
func (*LocalRecord) Connected ¶ added in v2.94.0
func (lr *LocalRecord) Connected(net network.Network, c network.Conn)
called when a connection opened
func (*LocalRecord) Disconnected ¶ added in v2.94.0
func (lr *LocalRecord) Disconnected(network.Network, network.Conn)
called when a connection closed
func (*LocalRecord) Listen ¶ added in v2.94.0
func (lr *LocalRecord) Listen(network.Network, ma.Multiaddr)
called when network starts listening on an addr
func (*LocalRecord) ListenClose ¶ added in v2.94.0
func (lr *LocalRecord) ListenClose(network.Network, ma.Multiaddr)
called when network stops listening on an addr
func (*LocalRecord) OpenedStream ¶ added in v2.94.0
func (lr *LocalRecord) OpenedStream(network.Network, network.Stream)
called when a stream opened
type MobileOptions ¶ added in v2.257.0
type MobileOptions struct { IpfsConfigPatch Config HostOption ipfs_p2p.HostOption RoutingOption ipfs_p2p.RoutingOption HostConfigFunc ipfs_mobile.HostConfigFunc RoutingConfigFunc ipfs_mobile.RoutingConfigFunc ExtraOpts map[string]bool }
type Multiaddrs ¶ added in v2.210.1
func NewMultiaddrs ¶ added in v2.210.1
func NewMultiaddrs(m []ma.Multiaddr) Multiaddrs
func (Multiaddrs) Len ¶ added in v2.210.1
func (ms Multiaddrs) Len() int
Len is the number of elements in the collection.
func (Multiaddrs) Less ¶ added in v2.210.1
func (ms Multiaddrs) Less(i, j int) bool
Less reports whether the element with index i should sort before the element with index j.
func (Multiaddrs) Swap ¶ added in v2.210.1
func (ms Multiaddrs) Swap(i, j int)
Swap swaps the elements with indexes i and j.
type Net ¶ added in v2.346.0
type Net interface { NetAddrs NetInterface }
type NetInterface ¶ added in v2.346.0
type PeeringService ¶ added in v2.414.0
type PeeringService struct {
// contains filtered or unexported fields
}
PeeringService maintains connections to specified peers, reconnecting on disconnect with a back-off.
func NewPeeringService ¶ added in v2.414.0
func NewPeeringService(logger *zap.Logger, host host.Host, fact backoff.BackoffFactory) *PeeringService
NewPeeringService constructs a new peering service. Peers can be added and removed immediately, but connections won't be formed until `Start` is called.
func (*PeeringService) AddPeer ¶ added in v2.414.0
func (ps *PeeringService) AddPeer(info peer.AddrInfo)
AddPeer adds a peer to the peering service. This function may be safely called at any time: before the service is started, while running, or after it stops.
Add peer may also be called multiple times for the same peer. The new addresses will replace the old.
func (*PeeringService) ListPeers ¶ added in v2.414.0
func (ps *PeeringService) ListPeers() []peer.AddrInfo
ListPeers lists peers in the peering service.
func (*PeeringService) RemovePeer ¶ added in v2.414.0
func (ps *PeeringService) RemovePeer(id peer.ID)
RemovePeer removes a peer from the peering service. This function may be safely called at any time: before the service is started, while running, or after it stops.
func (*PeeringService) Start ¶ added in v2.414.0
func (ps *PeeringService) Start() error
Start starts the peering service, connecting and maintaining connections to all registered peers. It returns an error if the service has already been stopped.
func (*PeeringService) Stop ¶ added in v2.414.0
func (ps *PeeringService) Stop() error
Stop stops the peering service.
type PubSubAPI ¶ added in v2.109.0
type PubSubAPI struct { *p2p_pubsub.PubSub // contains filtered or unexported fields }
func (*PubSubAPI) Peers ¶ added in v2.109.0
func (ps *PubSubAPI) Peers(ctx context.Context, opts ...ipfs_iopts.PubSubPeersOption) ([]p2p_peer.ID, error)
Peers list peers we are currently pubsubbing with
func (*PubSubAPI) Subscribe ¶ added in v2.109.0
func (ps *PubSubAPI) Subscribe(ctx context.Context, topic string, opts ...ipfs_iopts.PubSubSubscribeOption) (ipfs_interface.PubSubSubscription, error)
Subscribe to messages on a given topic
type PubsubMonitor ¶ added in v2.210.1
type PubsubMonitor struct {
// contains filtered or unexported fields
}
func (*PubsubMonitor) Emit ¶ added in v2.210.1
func (pt *PubsubMonitor) Emit(e *EvtPubSubTopic)
func (*PubsubMonitor) EventTracerOption ¶ added in v2.210.1
func (pt *PubsubMonitor) EventTracerOption() ps.Option
func (*PubsubMonitor) Trace ¶ added in v2.210.1
func (pt *PubsubMonitor) Trace(e *ps_pb.TraceEvent)
type TestingAPIOpts ¶ added in v2.50.0
type TypeTagAction ¶ added in v2.414.0
type TypeTagAction int
const ( TypeTagActionTag TypeTagAction = iota TypeTagActionUntag TypeTagActionUpsert )