Documentation ¶
Index ¶
- func NewOrLoadReceived(kv *versioned.KV) (*Received, []*ReceivedTransfer, error)
- func NewOrLoadSent(kv *versioned.KV) (*Sent, []Part, error)
- type Part
- type Received
- type ReceivedTransfer
- func (rt *ReceivedTransfer) AddPart(part []byte, partNum int) error
- func (rt *ReceivedTransfer) CompareAndSwapCallbackFps(completed bool, received, total uint16, err error) bool
- func (rt *ReceivedTransfer) CopyPartStatusVector() *utility.StateVector
- func (rt *ReceivedTransfer) Delete() error
- func (rt *ReceivedTransfer) FileName() string
- func (rt *ReceivedTransfer) FileSize() uint32
- func (rt *ReceivedTransfer) GetFile() []byte
- func (rt *ReceivedTransfer) GetUnusedCyphers() []cypher.Cypher
- func (rt *ReceivedTransfer) NumParts() uint16
- func (rt *ReceivedTransfer) NumReceived() uint16
- func (rt *ReceivedTransfer) TransferID() *ftCrypto.TransferID
- type Sent
- type SentTransfer
- func (st *SentTransfer) CompareAndSwapCallbackFps(completed bool, arrived, total uint16, err error) bool
- func (st *SentTransfer) CopyPartStatusVector() *utility.StateVector
- func (st *SentTransfer) Delete() error
- func (st *SentTransfer) FileName() string
- func (st *SentTransfer) FileSize() uint32
- func (st *SentTransfer) GetUnsentParts() []Part
- func (st *SentTransfer) NumArrived() uint16
- func (st *SentTransfer) NumParts() uint16
- func (st *SentTransfer) Recipient() *id.ID
- func (st *SentTransfer) Status() TransferStatus
- func (st *SentTransfer) TransferID() *ftCrypto.TransferID
- type TransferStatus
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewOrLoadReceived ¶
func NewOrLoadReceived(kv *versioned.KV) (*Received, []*ReceivedTransfer, error)
NewOrLoadReceived attempts to load a Received from storage. Or if none exist, then a new Received is returned. Also returns a list of all transfers that have unreceived file parts so their fingerprints can be re-added.
Types ¶
type Part ¶
type Part struct {
// contains filtered or unexported fields
}
Part contains information about a single file part and its parent transfer. Also contains cryptographic information needed to encrypt the part data.
func (*Part) GetEncryptedPart ¶
func (p *Part) GetEncryptedPart(contentsSize int) ( encryptedPart, mac []byte, fp format.Fingerprint, err error)
GetEncryptedPart gets the specified part, encrypts it, and returns the encrypted part along with its MAC and fingerprint. An error is returned if no fingerprints are available.
func (*Part) MarkArrived ¶
func (p *Part) MarkArrived()
MarkArrived marks the part as arrived. This should be called after the round the part is sent on succeeds.
func (*Part) TransferID ¶
func (p *Part) TransferID() *ftCrypto.TransferID
TransferID returns the ID of the file transfer.
type Received ¶
type Received struct {
// contains filtered or unexported fields
}
Received contains a list of all received transfers.
func (*Received) AddTransfer ¶
func (r *Received) AddTransfer(key *ftCrypto.TransferKey, tid *ftCrypto.TransferID, fileName string, transferMAC []byte, fileSize uint32, numParts, numFps uint16) (*ReceivedTransfer, error)
AddTransfer adds the ReceivedTransfer to the map keyed on its transfer ID.
func (*Received) GetTransfer ¶
func (r *Received) GetTransfer(tid *ftCrypto.TransferID) (*ReceivedTransfer, bool)
GetTransfer returns the ReceivedTransfer with the desiccated transfer ID or false if none exists.
func (*Received) RemoveTransfer ¶
func (r *Received) RemoveTransfer(tid *ftCrypto.TransferID) error
RemoveTransfer removes the transfer from the map. If no transfer exists, returns nil. Only errors due to saving to storage are returned.
type ReceivedTransfer ¶
type ReceivedTransfer struct {
// contains filtered or unexported fields
}
ReceivedTransfer contains information and progress data for a receiving or received file transfer.
func (*ReceivedTransfer) AddPart ¶
func (rt *ReceivedTransfer) AddPart(part []byte, partNum int) error
AddPart adds the file part to the list of file parts at the index of partNum.
func (*ReceivedTransfer) CompareAndSwapCallbackFps ¶
func (rt *ReceivedTransfer) CompareAndSwapCallbackFps( completed bool, received, total uint16, err error) bool
CompareAndSwapCallbackFps compares the fingerprint to the previous callback call's fingerprint. If they are different, the new one is stored, and it returns true. Returns fall if they are the same.
func (*ReceivedTransfer) CopyPartStatusVector ¶
func (rt *ReceivedTransfer) CopyPartStatusVector() *utility.StateVector
CopyPartStatusVector returns a copy of the part status vector that can be used to look up the current status of parts. Note that the statuses are from when this function is called and not realtime.
func (*ReceivedTransfer) Delete ¶
func (rt *ReceivedTransfer) Delete() error
Delete deletes all data in the ReceivedTransfer from storage.
func (*ReceivedTransfer) FileName ¶
func (rt *ReceivedTransfer) FileName() string
FileName returns the transfer's file name.
func (*ReceivedTransfer) FileSize ¶
func (rt *ReceivedTransfer) FileSize() uint32
FileSize returns the size of the entire file transfer.
func (*ReceivedTransfer) GetFile ¶
func (rt *ReceivedTransfer) GetFile() []byte
GetFile concatenates all file parts and returns it as a single complete file. Note that this function does not care for the completeness of the file and returns all parts it has.
func (*ReceivedTransfer) GetUnusedCyphers ¶
func (rt *ReceivedTransfer) GetUnusedCyphers() []cypher.Cypher
GetUnusedCyphers returns a list of cyphers with unused fingerprint numbers.
func (*ReceivedTransfer) NumParts ¶
func (rt *ReceivedTransfer) NumParts() uint16
NumParts returns the total number of file parts in the transfer.
func (*ReceivedTransfer) NumReceived ¶
func (rt *ReceivedTransfer) NumReceived() uint16
NumReceived returns the number of parts that have been received.
func (*ReceivedTransfer) TransferID ¶
func (rt *ReceivedTransfer) TransferID() *ftCrypto.TransferID
TransferID returns the transfer's ID.
type Sent ¶
type Sent struct {
// contains filtered or unexported fields
}
Sent contains a list of all sent transfers.
func (*Sent) AddTransfer ¶
func (s *Sent) AddTransfer(recipient *id.ID, key *ftCrypto.TransferKey, tid *ftCrypto.TransferID, fileName string, fileSize uint32, parts [][]byte, numFps uint16) (*SentTransfer, error)
AddTransfer creates a SentTransfer and adds it to the map keyed on its transfer ID.
func (*Sent) GetTransfer ¶
func (s *Sent) GetTransfer(tid *ftCrypto.TransferID) (*SentTransfer, bool)
GetTransfer returns the SentTransfer with the desiccated transfer ID or false if none exists.
func (*Sent) RemoveTransfer ¶
func (s *Sent) RemoveTransfer(tid *ftCrypto.TransferID) error
RemoveTransfer removes the transfer from the map. If no transfer exists, returns nil. Only errors due to saving to storage are returned.
type SentTransfer ¶
type SentTransfer struct {
// contains filtered or unexported fields
}
SentTransfer contains information and progress data for sending or sent file transfer.
func (*SentTransfer) CompareAndSwapCallbackFps ¶
func (st *SentTransfer) CompareAndSwapCallbackFps( completed bool, arrived, total uint16, err error) bool
CompareAndSwapCallbackFps compares the fingerprint to the previous callback call's fingerprint. If they are different, the new one is stored, and it returns true. Returns fall if they are the same.
func (*SentTransfer) CopyPartStatusVector ¶
func (st *SentTransfer) CopyPartStatusVector() *utility.StateVector
CopyPartStatusVector returns a copy of the part status vector that can be used to look up the current status of parts. Note that the statuses are from when this function is called and not realtime.
func (*SentTransfer) Delete ¶
func (st *SentTransfer) Delete() error
Delete deletes all data in the SentTransfer from storage.
func (*SentTransfer) FileName ¶
func (st *SentTransfer) FileName() string
FileName returns the transfer's file name.
func (*SentTransfer) FileSize ¶
func (st *SentTransfer) FileSize() uint32
FileSize returns the size of the entire file transfer.
func (*SentTransfer) GetUnsentParts ¶
func (st *SentTransfer) GetUnsentParts() []Part
GetUnsentParts builds a list of all unsent parts, each in a Part object.
func (*SentTransfer) NumArrived ¶
func (st *SentTransfer) NumArrived() uint16
NumArrived returns the number of parts that have arrived.
func (*SentTransfer) NumParts ¶
func (st *SentTransfer) NumParts() uint16
NumParts returns the total number of file parts in the transfer.
func (*SentTransfer) Recipient ¶
func (st *SentTransfer) Recipient() *id.ID
Recipient returns the transfer's recipient ID.
func (*SentTransfer) Status ¶
func (st *SentTransfer) Status() TransferStatus
Status returns the status of the transfer.
func (*SentTransfer) TransferID ¶
func (st *SentTransfer) TransferID() *ftCrypto.TransferID
TransferID returns the transfer's ID.
type TransferStatus ¶
type TransferStatus int
TransferStatus indicates the state of the transfer.
const ( // Running indicates that the transfer is in the processes of sending Running TransferStatus = iota // Completed indicates that all file parts have been sent and arrived Completed // Failed indicates that the transfer has run out of sending retries Failed )
func UnmarshalTransferStatus ¶
func UnmarshalTransferStatus(b []byte) TransferStatus
UnmarshalTransferStatus unmarshalls the 8-byte byte slice into a TransferStatus.
func (TransferStatus) Marshal ¶
func (ts TransferStatus) Marshal() []byte
Marshal returns the byte representation of the TransferStatus.
func (TransferStatus) String ¶
func (ts TransferStatus) String() string
String prints the string representation of the TransferStatus. This function satisfies the fmt.Stringer interface.