Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Channel ¶
type Channel struct {
// contains filtered or unexported fields
}
Channel represents all the parameters for a single data transfer
func (Channel) BaseCID ¶
func (c Channel) BaseCID() cid.Cid
BaseCID returns the CID that is at the root of this data transfer
func (Channel) Selector ¶
Selector returns the IPLD selector for this data transfer (represented as an IPLD node)
func (Channel) TransferID ¶
func (c Channel) TransferID() TransferID
TransferID returns the transfer id for this channel
type ChannelID ¶
type ChannelID struct {
// contains filtered or unexported fields
}
ChannelID is a unique identifier for a channel, distinct by both the other party's peer ID + the transfer ID
type ChannelState ¶
type ChannelState struct { Channel // contains filtered or unexported fields }
ChannelState is immutable channel data plus mutable state
func (ChannelState) Received ¶
func (c ChannelState) Received() uint64
Received returns the number of bytes received
func (ChannelState) Sent ¶
func (c ChannelState) Sent() uint64
Sent returns the number of bytes sent
type Event ¶
type Event int
Event is a name for an event that occurs on a data transfer channel
const ( // Open is an event occurs when a channel is first opened Open Event = iota // Progress is an event that gets emitted every time more data is transferred Progress // Error is an event that emits when an error occurs in a data transfer Error // Complete is emitted when a data transfer is complete Complete )
type Manager ¶
type Manager interface { // RegisterVoucherType registers a validator for the given voucher type // will error if voucher type does not implement voucher // or if there is a voucher type registered with an identical identifier RegisterVoucherType(voucherType reflect.Type, validator RequestValidator) error // open a data transfer that will send data to the recipient peer and // open a data transfer that will send data to the recipient peer and // transfer parts of the piece that match the selector OpenPushDataChannel(ctx context.Context, to peer.ID, voucher Voucher, baseCid cid.Cid, selector ipld.Node) (ChannelID, error) // open a data transfer that will request data from the sending peer and // transfer parts of the piece that match the selector OpenPullDataChannel(ctx context.Context, to peer.ID, voucher Voucher, baseCid cid.Cid, selector ipld.Node) (ChannelID, error) // close an open channel (effectively a cancel) CloseDataTransferChannel(x ChannelID) // get status of a transfer TransferChannelStatus(x ChannelID) Status // get notified when certain types of events happen SubscribeToEvents(subscriber Subscriber) // get all in progress transfers InProgressChannels() map[ChannelID]ChannelState }
Manager is the core interface presented by all implementations of of the data transfer sub system
func NewDAGServiceDataTransfer ¶
func NewDAGServiceDataTransfer(dag ipldformat.DAGService) Manager
NewDAGServiceDataTransfer returns a data transfer manager based on an IPLD DAGService
type RequestValidator ¶
type RequestValidator interface { // ValidatePush validates a push request received from the peer that will send data ValidatePush( sender peer.ID, voucher Voucher, baseCid cid.Cid, selector ipld.Node) error // ValidatePull validates a pull request received from the peer that will receive data ValidatePull( receiver peer.ID, voucher Voucher, baseCid cid.Cid, selector ipld.Node) error }
RequestValidator is an interface implemented by the client of the data transfer module to validate requests
type Subscriber ¶
type Subscriber func(event Event, channelState ChannelState)
Subscriber is a callback that is called when events are emitted
type TransferID ¶
type TransferID uint64
TransferID is an identifier for a data transfer, shared between request/responder and unique to the requester
type Voucher ¶
type Voucher interface { // ToBytes converts the Voucher to raw bytes ToBytes() ([]byte, error) // FromBytes reads a Voucher from raw bytes FromBytes([]byte) error // Identifier is a unique string identifier for this voucher type Identifier() string }
Voucher is used to validate a data transfer request against the underlying storage or retrieval deal that precipitated it. The only requirement is a voucher can read and write from bytes, and has a string identifier type