Documentation ¶
Overview ¶
package bitswap implements the IPFS Exchange interface with the BitSwap bilateral exchange protocol.
Index ¶
- Constants
- Variables
- func New(parent context.Context, p peer.ID, network bsnet.BitSwapNetwork, ...) exchange.Interface
- type Bitswap
- func (bs *Bitswap) CancelWants(ks []key.Key)
- func (bs *Bitswap) Close() error
- func (bs *Bitswap) GetBlock(parent context.Context, k key.Key) (*blocks.Block, error)
- func (bs *Bitswap) GetBlocks(ctx context.Context, keys []key.Key) (<-chan *blocks.Block, error)
- func (bs *Bitswap) GetWantlist() []key.Key
- func (bs *Bitswap) HasBlock(blk *blocks.Block) error
- func (bs *Bitswap) PeerConnected(p peer.ID)
- func (bs *Bitswap) PeerDisconnected(p peer.ID)
- func (bs *Bitswap) ReceiveError(err error)
- func (bs *Bitswap) ReceiveMessage(ctx context.Context, p peer.ID, incoming bsmsg.BitSwapMessage)
- func (bs *Bitswap) Stat() (*Stat, error)
- func (bs *Bitswap) WantlistForPeer(p peer.ID) []key.Key
- type Instance
- type SessionGenerator
- type Stat
- type WantManager
- func (pm *WantManager) CancelWants(ks []key.Key)
- func (pm *WantManager) Connected(p peer.ID)
- func (pm *WantManager) ConnectedPeers() []peer.ID
- func (pm *WantManager) Disconnected(p peer.ID)
- func (pm *WantManager) Run()
- func (pm *WantManager) SendBlock(ctx context.Context, env *engine.Envelope)
- func (pm *WantManager) WantBlocks(ks []key.Key)
Constants ¶
const (
HasBlockBufferSize = 256
)
Variables ¶
var ErrAlreadyHaveBlock = errors.New("already have block")
var TaskWorkerCount = 8
Functions ¶
func New ¶
func New(parent context.Context, p peer.ID, network bsnet.BitSwapNetwork, bstore blockstore.Blockstore, nice bool) exchange.Interface
New initializes a BitSwap instance that communicates over the provided BitSwapNetwork. This function registers the returned instance as the network delegate. Runs until context is cancelled.
Types ¶
type Bitswap ¶ added in v0.3.2
type Bitswap struct {
// contains filtered or unexported fields
}
Bitswap instances implement the bitswap protocol.
func (*Bitswap) CancelWants ¶ added in v0.3.8
CancelWant removes a given key from the wantlist
func (*Bitswap) GetBlock ¶ added in v0.3.2
GetBlock attempts to retrieve a particular block from peers within the deadline enforced by the context.
func (*Bitswap) GetBlocks ¶ added in v0.3.2
GetBlocks returns a channel where the caller may receive blocks that correspond to the provided |keys|. Returns an error if BitSwap is unable to begin this request within the deadline enforced by the context.
NB: Your request remains open until the context expires. To conserve resources, provide a context with a reasonably short deadline (ie. not one that lasts throughout the lifetime of the server)
func (*Bitswap) GetWantlist ¶ added in v0.3.2
func (*Bitswap) HasBlock ¶ added in v0.3.2
HasBlock announces the existance of a block to this bitswap service. The service will potentially notify its peers.
func (*Bitswap) PeerConnected ¶ added in v0.3.2
Connected/Disconnected warns bitswap about peer connections
func (*Bitswap) PeerDisconnected ¶ added in v0.3.2
Connected/Disconnected warns bitswap about peer connections
func (*Bitswap) ReceiveError ¶ added in v0.3.2
func (*Bitswap) ReceiveMessage ¶ added in v0.3.2
type Instance ¶
func Session ¶ added in v0.3.6
session creates a test bitswap session.
NB: It's easy make mistakes by providing the same peer ID to two different sessions. To safeguard, use the SessionGenerator to generate sessions. It's just a much better idea.
func (*Instance) Blockstore ¶
func (i *Instance) Blockstore() blockstore.Blockstore
type SessionGenerator ¶
type SessionGenerator struct {
// contains filtered or unexported fields
}
TODO move this SessionGenerator to the core package and export it as the core generator
func NewTestSessionGenerator ¶
func NewTestSessionGenerator( net tn.Network) SessionGenerator
WARNING: this uses RandTestBogusIdentity DO NOT USE for NON TESTS!
func (*SessionGenerator) Close ¶
func (g *SessionGenerator) Close() error
func (*SessionGenerator) Instances ¶
func (g *SessionGenerator) Instances(n int) []Instance
func (*SessionGenerator) Next ¶
func (g *SessionGenerator) Next() Instance
type WantManager ¶ added in v0.3.5
type WantManager struct {
// contains filtered or unexported fields
}
func NewWantManager ¶ added in v0.3.5
func NewWantManager(ctx context.Context, network bsnet.BitSwapNetwork) *WantManager
func (*WantManager) CancelWants ¶ added in v0.3.5
func (pm *WantManager) CancelWants(ks []key.Key)
func (*WantManager) Connected ¶ added in v0.3.5
func (pm *WantManager) Connected(p peer.ID)
func (*WantManager) ConnectedPeers ¶ added in v0.4.0
func (pm *WantManager) ConnectedPeers() []peer.ID
func (*WantManager) Disconnected ¶ added in v0.3.5
func (pm *WantManager) Disconnected(p peer.ID)
func (*WantManager) Run ¶ added in v0.3.5
func (pm *WantManager) Run()
TODO: use goprocess here once i trust it
func (*WantManager) SendBlock ¶ added in v0.3.5
func (pm *WantManager) SendBlock(ctx context.Context, env *engine.Envelope)
func (*WantManager) WantBlocks ¶ added in v0.3.5
func (pm *WantManager) WantBlocks(ks []key.Key)
Directories ¶
Path | Synopsis |
---|---|
package decision implements the decision engine for the bitswap service.
|
package decision implements the decision engine for the bitswap service. |
pb
Package bitswap_message_pb is a generated protocol buffer package.
|
Package bitswap_message_pb is a generated protocol buffer package. |
package wantlist implements an object for bitswap that contains the keys that a given peer wants.
|
package wantlist implements an object for bitswap that contains the keys that a given peer wants. |