Documentation
¶
Overview ¶
Package network defines interfaces for Bitswap protocol network operations.
BitSwapNetwork is the primary interface, providing message sending, peer connectivity management, and connection events. Receiver handles incoming messages and peer notifications. MessageSender supports sending a series of messages to a single peer. See protocol versions for the supported protocol identifiers.
Index ¶
- func SplitHTTPAddrs(pi peer.AddrInfo) (httpPeer peer.AddrInfo, otherPeer peer.AddrInfo)
- type BitSwapNetwork
- type ConnectEventManager
- func (c *ConnectEventManager) Connected(p peer.ID)
- func (c *ConnectEventManager) Disconnected(p peer.ID)
- func (c *ConnectEventManager) MarkUnresponsive(p peer.ID)
- func (c *ConnectEventManager) OnMessage(p peer.ID)
- func (c *ConnectEventManager) SetListeners(connListeners ...ConnectionListener)
- func (c *ConnectEventManager) Start()
- func (c *ConnectEventManager) Stop()
- type ConnectionListener
- type MessageSender
- type MessageSenderOpts
- type ParsedURL
- type PeerTagger
- type Pinger
- type Receiver
- type Routing
- type Stats
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BitSwapNetwork ¶
type BitSwapNetwork interface {
// SendMessage sends a Bitswap message to a peer.
SendMessage(
context.Context,
peer.ID,
bsmsg.BitSwapMessage) error
// Start registers the Reciver and starts handling new messages, connectivity events, etc.
Start(...Receiver)
// Stop stops the network service.
Stop()
Connect(context.Context, peer.AddrInfo) error
DisconnectFrom(context.Context, peer.ID) error
IsConnectedToPeer(context.Context, peer.ID) bool
NewMessageSender(context.Context, peer.ID, *MessageSenderOpts) (MessageSender, error)
Host() host.Host
Stats() Stats
Self() peer.ID
Pinger
PeerTagger
}
BitSwapNetwork provides network connectivity for Bitswap sessions.
func New ¶ added in v0.29.0
func New(pstore peerstore.Peerstore, bitswap BitSwapNetwork, http BitSwapNetwork) BitSwapNetwork
New returns a BitSwapNetwork supported by underlying IPFS host.
type ConnectEventManager ¶ added in v0.29.0
type ConnectEventManager struct {
// contains filtered or unexported fields
}
func NewConnectEventManager ¶ added in v0.29.0
func NewConnectEventManager(connListeners ...ConnectionListener) *ConnectEventManager
func (*ConnectEventManager) Connected ¶ added in v0.29.0
func (c *ConnectEventManager) Connected(p peer.ID)
Called whenever we receive a new connection. May be called many times.
func (*ConnectEventManager) Disconnected ¶ added in v0.29.0
func (c *ConnectEventManager) Disconnected(p peer.ID)
Called when we drop the final connection to a peer.
func (*ConnectEventManager) MarkUnresponsive ¶ added in v0.29.0
func (c *ConnectEventManager) MarkUnresponsive(p peer.ID)
Called whenever a peer is unresponsive.
func (*ConnectEventManager) OnMessage ¶ added in v0.29.0
func (c *ConnectEventManager) OnMessage(p peer.ID)
Called whenever we receive a message from a peer.
- When we're connected to the peer, this will mark the peer as responsive (from unresponsive). - When not connected, we ignore this call. Unfortunately, a peer may disconnect before we process
the "on message" event, so we can't treat this as evidence of a connection.
func (*ConnectEventManager) SetListeners ¶ added in v0.33.1
func (c *ConnectEventManager) SetListeners(connListeners ...ConnectionListener)
SetListeners sets or replaces the current listeners. It has no effect after Start is called.
func (*ConnectEventManager) Start ¶ added in v0.29.0
func (c *ConnectEventManager) Start()
func (*ConnectEventManager) Stop ¶ added in v0.29.0
func (c *ConnectEventManager) Stop()
type ConnectionListener ¶
type MessageSender ¶
type MessageSender interface {
SendMsg(context.Context, bsmsg.BitSwapMessage) error
Reset() error
// Indicates whether the remote peer supports HAVE / DONT_HAVE messages
SupportsHave() bool
}
MessageSender is an interface for sending a series of messages over the bitswap network
type MessageSenderOpts ¶
type ParsedURL ¶ added in v0.29.0
ParsedURL contains the result of parsing an "http" transport multiaddress. SNI is set when the multiaddress specifies an SNI value.
func ExtractHTTPAddress ¶ added in v0.29.0
ExtractHTTPAddress extracts the HTTP schema+host+port from a multiaddress and returns a *url.URL and an SNI string if present.
func ExtractURLsFromPeer ¶ added in v0.29.0
ExtractURLsFromPeer extracts all HTTP schema+host+port addresses as ParsedURL from a peer.AddrInfo object.
type PeerTagger ¶ added in v0.29.0
type PeerTagger interface {
TagPeer(peer.ID, string, int)
UntagPeer(peer.ID, string)
Protect(peer.ID, string)
Unprotect(peer.ID, string) bool
}
PeerTagger is an interface for tagging peers with metadata
type Pinger ¶
type Pinger interface {
// Ping a peer
Ping(context.Context, peer.ID) ping.Result
// Get the average latency of all pings
Latency(peer.ID) time.Duration
}
Pinger is an interface to ping a peer and get the average latency of all pings
type Receiver ¶
type Receiver interface {
ReceiveMessage(
ctx context.Context,
sender peer.ID,
incoming bsmsg.BitSwapMessage)
ReceiveError(error)
// Connected/Disconnected warns bitswap about peer connections.
PeerConnected(peer.ID)
PeerDisconnected(peer.ID)
}
Receiver is an interface that can receive messages from the BitSwapNetwork.