Documentation ¶
Overview ¶
Package renter is responsible for uploading and downloading files on the siaclassic network.
Index ¶
- Constants
- Variables
- func NewDownloadDestinationBuffer(length uint64) downloadDestinationBuffer
- func NewRSCode(nData, nParity int) (modules.ErasureCoder, error)
- type Renter
- func (r *Renter) ActiveHosts() []modules.HostDBEntry
- func (r *Renter) AllHosts() []modules.HostDBEntry
- func (r *Renter) CancelContract(id types.FileContractID) error
- func (r *Renter) ClearDownloadHistory(after, before time.Time) error
- func (r *Renter) Close() error
- func (r *Renter) ContractUtility(pk types.SiaClassicPublicKey) (modules.ContractUtility, bool)
- func (r *Renter) Contracts() []modules.RenterContract
- func (r *Renter) CurrentPeriod() types.BlockHeight
- func (r *Renter) DeleteFile(nickname string) error
- func (r *Renter) Download(p modules.RenterDownloadParameters) error
- func (r *Renter) DownloadAsync(p modules.RenterDownloadParameters) error
- func (r *Renter) DownloadHistory() []modules.DownloadInfo
- func (r *Renter) EstimateHostScore(e modules.HostDBEntry) modules.HostScoreBreakdown
- func (r *Renter) File(siaclassicPath string) (modules.FileInfo, error)
- func (r *Renter) FileList() []modules.FileInfo
- func (r *Renter) Host(spk types.SiaClassicPublicKey) (modules.HostDBEntry, bool)
- func (r *Renter) InitialScanComplete() (bool, error)
- func (r *Renter) LoadSharedFiles(filename string) ([]string, error)
- func (r *Renter) LoadSharedFilesASCII(asciiSiaClassic string) ([]string, error)
- func (r *Renter) OldContracts() []modules.RenterContract
- func (r *Renter) PeriodSpending() modules.ContractorSpending
- func (r *Renter) PriceEstimation() modules.RenterPriceEstimation
- func (r *Renter) ProcessConsensusChange(cc modules.ConsensusChange)
- func (r *Renter) RenameFile(currentName, newName string) error
- func (r *Renter) ScoreBreakdown(e modules.HostDBEntry) modules.HostScoreBreakdown
- func (r *Renter) SetSettings(s modules.RenterSettings) error
- func (r *Renter) Settings() modules.RenterSettings
- func (r *Renter) ShareFiles(nicknames []string, shareDest string) error
- func (r *Renter) ShareFilesASCII(nicknames []string) (string, error)
- func (r *Renter) Streamer(siaclassicPath string) (string, io.ReadSeeker, error)
- func (r *Renter) Upload(up modules.FileUploadParams) error
Constants ¶
const ( // DefaultStreamCacheSize is the default cache size of the /renter/stream cache in // chunks, the user can set a custom cache size through the API DefaultStreamCacheSize = 2 // DefaultMaxDownloadSpeed is set to zero to indicate no limit, the user // can set a custom MaxDownloadSpeed through the API DefaultMaxDownloadSpeed = 0 // DefaultMaxUploadSpeed is set to zero to indicate no limit, the user // can set a custom MaxUploadSpeed through the API DefaultMaxUploadSpeed = 0 )
const ( // PersistFilename is the filename to be used when persisting renter information to a JSON file PersistFilename = "renter.json" ShareExtension = ".siaclassic" )
Variables ¶
var ( // ErrEmptyFilename is an error when filename is empty ErrEmptyFilename = errors.New("filename must be a nonempty string") // ErrPathOverload is an error when a file already exists at that location ErrPathOverload = errors.New("a file already exists at that location") // ErrUnknownPath is an error when a file cannot be found with the given path ErrUnknownPath = errors.New("no file known with that path") )
var ( //ErrBadFile is an error when a file does not qualify as .siaclassic file ErrBadFile = errors.New("not a .siaclassic file") // ErrIncompatible is an error when file is not compatible with current version ErrIncompatible = errors.New("file is not compatible with current version") // ErrNoNicknames is an error when no nickname is given ErrNoNicknames = errors.New("at least one nickname must be supplied") ErrNonShareSuffix = errors.New("suffix of file must be " + ShareExtension) )
Functions ¶
func NewDownloadDestinationBuffer ¶
func NewDownloadDestinationBuffer(length uint64) downloadDestinationBuffer
NewDownloadDestinationBuffer allocates the necessary number of shards for the downloadDestinationBuffer and returns the new buffer.
Types ¶
type Renter ¶
type Renter struct {
// contains filtered or unexported fields
}
A Renter is responsible for tracking all of the files that a user has uploaded to SiaClassic, as well as the locations and health of these files.
TODO: Separate the workerPool to have its own mutex. The workerPool doesn't interfere with any of the other fields in the renter, should be fine for it to have a separate mutex, that way operations on the worker pool don't block operations on other parts of the struct. If we're going to do it that way, might make sense to split the worker pool off into it's own struct entirely the same way that we split of the memoryManager entirely.
func New ¶
func New(g modules.Gateway, cs modules.ConsensusSet, wallet modules.Wallet, tpool modules.TransactionPool, persistDir string) (*Renter, error)
New returns an initialized renter.
func NewCustomRenter ¶
func NewCustomRenter(g modules.Gateway, cs modules.ConsensusSet, tpool modules.TransactionPool, hdb hostDB, hc hostContractor, persistDir string, deps modules.Dependencies) (*Renter, error)
NewCustomRenter initializes a renter and returns it.
func (*Renter) ActiveHosts ¶
func (r *Renter) ActiveHosts() []modules.HostDBEntry
ActiveHosts returns an array of hostDB's active hosts
func (*Renter) AllHosts ¶
func (r *Renter) AllHosts() []modules.HostDBEntry
AllHosts returns an array of all hosts
func (*Renter) CancelContract ¶
func (r *Renter) CancelContract(id types.FileContractID) error
CancelContract cancels a renter's contract by ID by setting goodForRenew and goodForUpload to false
func (*Renter) ClearDownloadHistory ¶
ClearDownloadHistory clears the renter's download history inclusive of the provided before and after timestamps
TODO: This function can be improved by implementing a binary search, the trick will be making the binary search be just as readable while handling all the edge cases
func (*Renter) ContractUtility ¶
func (r *Renter) ContractUtility(pk types.SiaClassicPublicKey) (modules.ContractUtility, bool)
ContractUtility returns the utility field for a given contract, along with a bool indicating if it exists.
func (*Renter) Contracts ¶
func (r *Renter) Contracts() []modules.RenterContract
Contracts returns an array of host contractor's staticContracts
func (*Renter) CurrentPeriod ¶
func (r *Renter) CurrentPeriod() types.BlockHeight
CurrentPeriod returns the host contractor's current period
func (*Renter) DeleteFile ¶
DeleteFile removes a file entry from the renter and deletes its data from the hosts it is stored on.
TODO: The data is not cleared from any contracts where the host is not immediately online.
func (*Renter) Download ¶
func (r *Renter) Download(p modules.RenterDownloadParameters) error
Download performs a file download using the passed parameters and blocks until the download is finished.
func (*Renter) DownloadAsync ¶
func (r *Renter) DownloadAsync(p modules.RenterDownloadParameters) error
DownloadAsync performs a file download using the passed parameters without blocking until the download is finished.
func (*Renter) DownloadHistory ¶
func (r *Renter) DownloadHistory() []modules.DownloadInfo
DownloadHistory returns the list of downloads that have been performed. Will include downloads that have not yet completed. Downloads will be roughly, but not precisely, sorted according to start time.
TODO: Currently the DownloadHistory only contains downloads from this session, does not contain downloads that were executed for the purposes of repairing, and has no way to clear the download history if it gets long or unwieldy. It's not entirely certain which of the missing features are actually desirable, please consult core team + app dev community before deciding what to implement.
func (*Renter) EstimateHostScore ¶
func (r *Renter) EstimateHostScore(e modules.HostDBEntry) modules.HostScoreBreakdown
EstimateHostScore returns the estimated host score
func (*Renter) File ¶
File returns file from siaclassicPath queried by user. Update based on FileList
func (*Renter) Host ¶
func (r *Renter) Host(spk types.SiaClassicPublicKey) (modules.HostDBEntry, bool)
Host returns the host associated with the given public key
func (*Renter) InitialScanComplete ¶
InitialScanComplete returns a boolean indicating if the initial scan of the hostdb is completed.
func (*Renter) LoadSharedFiles ¶
LoadSharedFiles loads a .siaclassic file into the renter. It returns the nicknames of the loaded files.
func (*Renter) LoadSharedFilesASCII ¶
LoadSharedFilesASCII loads an ASCII-encoded .siaclassic file into the renter. It returns the nicknames of the loaded files.
func (*Renter) OldContracts ¶
func (r *Renter) OldContracts() []modules.RenterContract
OldContracts returns an array of host contractor's oldContracts
func (*Renter) PeriodSpending ¶
func (r *Renter) PeriodSpending() modules.ContractorSpending
PeriodSpending returns the host contractor's period spending
func (*Renter) PriceEstimation ¶
func (r *Renter) PriceEstimation() modules.RenterPriceEstimation
PriceEstimation estimates the cost in siaclassiccoins of performing various storage and data operations.
TODO: Make this function line up with the actual settings in the renter. Perhaps even make it so it uses the renter's actual contracts if it has any.
func (*Renter) ProcessConsensusChange ¶
func (r *Renter) ProcessConsensusChange(cc modules.ConsensusChange)
ProcessConsensusChange returns the process consensus change
func (*Renter) RenameFile ¶
RenameFile takes an existing file and changes the nickname. The original file must exist, and there must not be any file that already has the replacement nickname.
func (*Renter) ScoreBreakdown ¶
func (r *Renter) ScoreBreakdown(e modules.HostDBEntry) modules.HostScoreBreakdown
ScoreBreakdown returns the score breakdown
func (*Renter) SetSettings ¶
func (r *Renter) SetSettings(s modules.RenterSettings) error
SetSettings will update the settings for the renter.
NOTE: This function can't be atomic. Typically we try to have user requests be atomic, so that either everything changes or nothing changes, but since these changes happen progressively, it's possible for some of the settings (like the allowance) to succeed, but then if the bandwidth limits for example are bad, then the allowance will update but the bandwidth will not update.
func (*Renter) Settings ¶
func (r *Renter) Settings() modules.RenterSettings
Settings returns the host contractor's allowance
func (*Renter) ShareFiles ¶
ShareFiles saves the specified files to shareDest.
func (*Renter) ShareFilesASCII ¶
ShareFilesASCII returns the specified files in ASCII format.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package contractor is responsible for forming and renewing file contracts with hosts.
|
Package contractor is responsible for forming and renewing file contracts with hosts. |
Package hostdb provides a HostDB object that implements the renter.hostDB interface.
|
Package hostdb provides a HostDB object that implements the renter.hostDB interface. |