Documentation ¶
Index ¶
- Variables
- type ChannelEnvironment
- type Channels
- func (c *Channels) Accept(chid datatransfer.ChannelID) error
- func (c *Channels) BeginFinalizing(chid datatransfer.ChannelID) error
- func (c *Channels) Cancel(chid datatransfer.ChannelID) error
- func (c *Channels) Complete(chid datatransfer.ChannelID) error
- func (c *Channels) CreateNew(tid datatransfer.TransferID, baseCid cid.Cid, selector ipld.Node, ...) (datatransfer.ChannelID, error)
- func (c *Channels) Error(chid datatransfer.ChannelID, err error) error
- func (c *Channels) FinishTransfer(chid datatransfer.ChannelID) error
- func (c *Channels) GetByID(ctx context.Context, chid datatransfer.ChannelID) (datatransfer.ChannelState, error)
- func (c *Channels) HasChannel(chid datatransfer.ChannelID) (bool, error)
- func (c *Channels) InProgress() (map[datatransfer.ChannelID]datatransfer.ChannelState, error)
- func (c *Channels) IncrementReceived(chid datatransfer.ChannelID, delta uint64) error
- func (c *Channels) IncrementSent(chid datatransfer.ChannelID, delta uint64) error
- func (c *Channels) NewVoucher(chid datatransfer.ChannelID, voucher datatransfer.Voucher) error
- func (c *Channels) NewVoucherResult(chid datatransfer.ChannelID, voucherResult datatransfer.VoucherResult) error
- func (c *Channels) PauseInitiator(chid datatransfer.ChannelID) error
- func (c *Channels) PauseResponder(chid datatransfer.ChannelID) error
- func (c *Channels) ResponderBeginsFinalization(chid datatransfer.ChannelID) error
- func (c *Channels) ResponderCompletes(chid datatransfer.ChannelID) error
- func (c *Channels) ResumeInitiator(chid datatransfer.ChannelID) error
- func (c *Channels) ResumeResponder(chid datatransfer.ChannelID) error
- type DecoderByTypeFunc
- type Notifier
Constants ¶
This section is empty.
Variables ¶
var ChannelEvents = fsm.Events{ fsm.Event(datatransfer.Open).FromAny().To(datatransfer.Requested), fsm.Event(datatransfer.Accept).From(datatransfer.Requested).To(datatransfer.Ongoing), fsm.Event(datatransfer.Cancel).FromAny().To(datatransfer.Cancelling), fsm.Event(datatransfer.Progress).FromMany( datatransfer.Requested, datatransfer.Ongoing, datatransfer.InitiatorPaused, datatransfer.ResponderPaused, datatransfer.BothPaused, datatransfer.ResponderCompleted, datatransfer.ResponderFinalizing).ToNoChange().Action(func(chst *internalChannelState, deltaSent uint64, deltaReceived uint64) error { chst.Received += deltaReceived chst.Sent += deltaSent return nil }), fsm.Event(datatransfer.Error).FromAny().To(datatransfer.Failing).Action(func(chst *internalChannelState, err error) error { chst.Message = err.Error() return nil }), fsm.Event(datatransfer.NewVoucher).FromAny().ToNoChange(). Action(func(chst *internalChannelState, vtype datatransfer.TypeIdentifier, voucherBytes []byte) error { chst.Vouchers = append(chst.Vouchers, encodedVoucher{Type: vtype, Voucher: &cbg.Deferred{Raw: voucherBytes}}) return nil }), fsm.Event(datatransfer.NewVoucherResult).FromAny().ToNoChange(). Action(func(chst *internalChannelState, vtype datatransfer.TypeIdentifier, voucherResultBytes []byte) error { chst.VoucherResults = append(chst.VoucherResults, encodedVoucherResult{Type: vtype, VoucherResult: &cbg.Deferred{Raw: voucherResultBytes}}) return nil }), fsm.Event(datatransfer.PauseInitiator). FromMany(datatransfer.Requested, datatransfer.Ongoing).To(datatransfer.InitiatorPaused). From(datatransfer.ResponderPaused).To(datatransfer.BothPaused). FromAny().ToJustRecord(), fsm.Event(datatransfer.PauseResponder). FromMany(datatransfer.Requested, datatransfer.Ongoing).To(datatransfer.ResponderPaused). From(datatransfer.InitiatorPaused).To(datatransfer.BothPaused). FromAny().ToJustRecord(), fsm.Event(datatransfer.ResumeInitiator). From(datatransfer.InitiatorPaused).To(datatransfer.Ongoing). From(datatransfer.BothPaused).To(datatransfer.ResponderPaused). FromAny().ToJustRecord(), fsm.Event(datatransfer.ResumeResponder). From(datatransfer.ResponderPaused).To(datatransfer.Ongoing). From(datatransfer.BothPaused).To(datatransfer.InitiatorPaused). From(datatransfer.Finalizing).To(datatransfer.Completing). FromAny().ToJustRecord(), fsm.Event(datatransfer.FinishTransfer). FromAny().To(datatransfer.TransferFinished). FromMany(datatransfer.Failing, datatransfer.Cancelling).ToJustRecord(). From(datatransfer.ResponderCompleted).To(datatransfer.Completing). From(datatransfer.ResponderFinalizing).To(datatransfer.ResponderFinalizingTransferFinished), fsm.Event(datatransfer.ResponderBeginsFinalization). FromAny().To(datatransfer.ResponderFinalizing). FromMany(datatransfer.Failing, datatransfer.Cancelling).ToJustRecord(). From(datatransfer.TransferFinished).To(datatransfer.ResponderFinalizingTransferFinished), fsm.Event(datatransfer.ResponderCompletes). FromAny().To(datatransfer.ResponderCompleted). FromMany(datatransfer.Failing, datatransfer.Cancelling).ToJustRecord(). From(datatransfer.ResponderPaused).To(datatransfer.ResponderFinalizing). From(datatransfer.TransferFinished).To(datatransfer.Completing). From(datatransfer.ResponderFinalizing).To(datatransfer.ResponderCompleted). From(datatransfer.ResponderFinalizingTransferFinished).To(datatransfer.Completing), fsm.Event(datatransfer.BeginFinalizing).FromAny().To(datatransfer.Finalizing), fsm.Event(datatransfer.Complete).FromAny().To(datatransfer.Completing), fsm.Event(datatransfer.CleanupComplete). From(datatransfer.Cancelling).To(datatransfer.Cancelled). From(datatransfer.Failing).To(datatransfer.Failed). From(datatransfer.Completing).To(datatransfer.Completed), }
ChannelEvents describe the events taht can
var ChannelFinalityStates = []fsm.StateKey{ datatransfer.Cancelled, datatransfer.Completed, datatransfer.Failed, }
ChannelFinalityStates are the final states for a channel
var ChannelStateEntryFuncs = fsm.StateEntryFuncs{ datatransfer.Cancelling: cleanupConnection, datatransfer.Failing: cleanupConnection, datatransfer.Completing: cleanupConnection, }
ChannelStateEntryFuncs are handlers called as we enter different states (currently unused for this fsm)
var EmptyChannelState = channelState{}
EmptyChannelState is the zero value for channel state, meaning not present
var ErrNotFound = errors.New("No channel for this channel ID")
ErrNotFound is returned when a channel cannot be found with a given channel ID
var ErrWrongType = errors.New("Cannot change type of implementation specific data after setting it")
ErrWrongType is returned when a caller attempts to change the type of implementation data after setting it
Functions ¶
This section is empty.
Types ¶
type ChannelEnvironment ¶ added in v0.4.0
type ChannelEnvironment interface { Protect(id peer.ID, tag string) Unprotect(id peer.ID, tag string) bool ID() peer.ID CleanupChannel(chid datatransfer.ChannelID) }
ChannelEnvironment -- just a proxy for DTNetwork for now
type Channels ¶
type Channels struct {
// contains filtered or unexported fields
}
Channels is a thread safe list of channels
func New ¶
func New(ds datastore.Datastore, notifier Notifier, voucherDecoder DecoderByTypeFunc, voucherResultDecoder DecoderByTypeFunc, env ChannelEnvironment) (*Channels, error)
New returns a new thread safe list of channels
func (*Channels) Accept ¶ added in v0.4.0
func (c *Channels) Accept(chid datatransfer.ChannelID) error
Accept marks a data transfer as accepted
func (*Channels) BeginFinalizing ¶ added in v0.4.0
func (c *Channels) BeginFinalizing(chid datatransfer.ChannelID) error
BeginFinalizing indicates a responder has finished processing but is awaiting confirmation from the initiator
func (*Channels) Cancel ¶ added in v0.4.0
func (c *Channels) Cancel(chid datatransfer.ChannelID) error
Cancel indicates a channel was cancelled prematurely
func (*Channels) Complete ¶ added in v0.4.0
func (c *Channels) Complete(chid datatransfer.ChannelID) error
Complete indicates responder has completed sending/receiving data
func (*Channels) CreateNew ¶
func (c *Channels) CreateNew(tid datatransfer.TransferID, baseCid cid.Cid, selector ipld.Node, voucher datatransfer.Voucher, initiator, dataSender, dataReceiver peer.ID) (datatransfer.ChannelID, error)
CreateNew creates a new channel id and channel state and saves to channels. returns error if the channel exists already.
func (*Channels) Error ¶ added in v0.4.0
func (c *Channels) Error(chid datatransfer.ChannelID, err error) error
Error indicates something that went wrong on a channel
func (*Channels) FinishTransfer ¶ added in v0.4.0
func (c *Channels) FinishTransfer(chid datatransfer.ChannelID) error
FinishTransfer an initiator has finished sending/receiving data
func (*Channels) GetByID ¶ added in v0.4.0
func (c *Channels) GetByID(ctx context.Context, chid datatransfer.ChannelID) (datatransfer.ChannelState, error)
GetByID searches for a channel in the slice of channels with id `chid`. Returns datatransfer.EmptyChannelState if there is no channel with that id
func (*Channels) HasChannel ¶ added in v0.4.0
func (c *Channels) HasChannel(chid datatransfer.ChannelID) (bool, error)
HasChannel returns true if the given channel id is being tracked
func (*Channels) InProgress ¶
func (c *Channels) InProgress() (map[datatransfer.ChannelID]datatransfer.ChannelState, error)
InProgress returns a list of in progress channels
func (*Channels) IncrementReceived ¶ added in v0.4.0
func (c *Channels) IncrementReceived(chid datatransfer.ChannelID, delta uint64) error
IncrementReceived increments the total received on the given channel by the given amount (returning the new total)
func (*Channels) IncrementSent ¶ added in v0.4.0
func (c *Channels) IncrementSent(chid datatransfer.ChannelID, delta uint64) error
IncrementSent increments the total sent on the given channel by the given amount (returning the new total)
func (*Channels) NewVoucher ¶ added in v0.4.0
func (c *Channels) NewVoucher(chid datatransfer.ChannelID, voucher datatransfer.Voucher) error
NewVoucher records a new voucher for this channel
func (*Channels) NewVoucherResult ¶ added in v0.4.0
func (c *Channels) NewVoucherResult(chid datatransfer.ChannelID, voucherResult datatransfer.VoucherResult) error
NewVoucherResult records a new voucher result for this channel
func (*Channels) PauseInitiator ¶ added in v0.4.0
func (c *Channels) PauseInitiator(chid datatransfer.ChannelID) error
PauseInitiator pauses the initator of this channel
func (*Channels) PauseResponder ¶ added in v0.4.0
func (c *Channels) PauseResponder(chid datatransfer.ChannelID) error
PauseResponder pauses the responder of this channel
func (*Channels) ResponderBeginsFinalization ¶ added in v0.4.0
func (c *Channels) ResponderBeginsFinalization(chid datatransfer.ChannelID) error
ResponderBeginsFinalization indicates a responder has finished processing but is awaiting confirmation from the initiator
func (*Channels) ResponderCompletes ¶ added in v0.4.0
func (c *Channels) ResponderCompletes(chid datatransfer.ChannelID) error
ResponderCompletes indicates an initator has finished receiving data from a responder
func (*Channels) ResumeInitiator ¶ added in v0.4.0
func (c *Channels) ResumeInitiator(chid datatransfer.ChannelID) error
ResumeInitiator resumes the initator of this channel
func (*Channels) ResumeResponder ¶ added in v0.4.0
func (c *Channels) ResumeResponder(chid datatransfer.ChannelID) error
ResumeResponder resumes the responder of this channel
type DecoderByTypeFunc ¶ added in v0.4.0
type DecoderByTypeFunc func(identifier datatransfer.TypeIdentifier) (encoding.Decoder, bool)
type Notifier ¶ added in v0.4.0
type Notifier func(datatransfer.Event, datatransfer.ChannelState)