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
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 ¶
type Bitswap struct {
// contains filtered or unexported fields
}
Bitswap instances implement the bitswap protocol.
func (*Bitswap) CancelWants ¶
CancelWant removes a given key from the wantlist
func (*Bitswap) GetBlock ¶
GetBlock attempts to retrieve a particular block from peers within the deadline enforced by the context.
func (*Bitswap) GetBlocks ¶
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 ¶
func (*Bitswap) HasBlock ¶
HasBlock announces the existance of a block to this bitswap service. The service will potentially notify its peers.
func (*Bitswap) PeerConnected ¶
Connected/Disconnected warns bitswap about peer connections
func (*Bitswap) PeerDisconnected ¶
Connected/Disconnected warns bitswap about peer connections
func (*Bitswap) ReceiveError ¶
func (*Bitswap) ReceiveMessage ¶
type Instance ¶
func Session ¶
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 ¶
type WantManager struct {
// contains filtered or unexported fields
}
func NewWantManager ¶
func NewWantManager(ctx context.Context, network bsnet.BitSwapNetwork) *WantManager
func (*WantManager) CancelWants ¶
func (pm *WantManager) CancelWants(ks []key.Key)
func (*WantManager) Connected ¶
func (pm *WantManager) Connected(p peer.ID)
func (*WantManager) Disconnected ¶
func (pm *WantManager) Disconnected(p peer.ID)
func (*WantManager) SendBlock ¶
func (pm *WantManager) SendBlock(ctx context.Context, env *engine.Envelope)
func (*WantManager) WantBlocks ¶
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. |