Package storage implements storage backends for package torrent.



    This section is empty.


    This section is empty.


    func CreateNativeZeroLengthFiles

    func CreateNativeZeroLengthFiles(info *metainfo.Info, dir string) (err error)

      Creates natives files for any zero-length file entries in the info. This is a helper for file-based storages, which don't address or write to zero- length files because they have no corresponding pieces.

      func NewSqlitePieceCompletion

      func NewSqlitePieceCompletion(dir string) (ret *sqlitePieceCompletion, err error)


      type Client

      type Client struct {
      	// contains filtered or unexported fields

      func NewClient

      func NewClient(cl ClientImpl) *Client

      func (Client) OpenTorrent

      func (cl Client) OpenTorrent(info *metainfo.Info, infoHash metainfo.Hash) (*Torrent, error)

      type ClientImpl

      type ClientImpl interface {
      	OpenTorrent(info *metainfo.Info, infoHash metainfo.Hash) (TorrentImpl, error)
      	Close() error

        Represents data storage for an unspecified torrent.

        func NewBoltDB

        func NewBoltDB(filePath string) ClientImpl

        func NewFile

        func NewFile(baseDir string) ClientImpl

          All Torrent data stored in this baseDir

          func NewFileByInfoHash

          func NewFileByInfoHash(baseDir string) ClientImpl

            File storage with data partitioned by infohash.

            func NewFileWithCompletion

            func NewFileWithCompletion(baseDir string, completion PieceCompletion) ClientImpl

            func NewFileWithCustomPathMaker

            func NewFileWithCustomPathMaker(baseDir string, pathMaker func(baseDir string, info *metainfo.Info, infoHash metainfo.Hash) string) ClientImpl

              Allows passing a function to determine the path for storing torrent data

              func NewMMap

              func NewMMap(baseDir string) ClientImpl

              func NewMMapWithCompletion

              func NewMMapWithCompletion(baseDir string, completion PieceCompletion) ClientImpl

              func NewResourcePieces

              func NewResourcePieces(p resource.Provider) ClientImpl

              type Completion

              type Completion struct {
              	Complete bool
              	Ok       bool

              type Piece

              type Piece struct {
              	// contains filtered or unexported fields

              func (Piece) ReadAt

              func (p Piece) ReadAt(b []byte, off int64) (n int, err error)

              func (Piece) WriteAt

              func (p Piece) WriteAt(b []byte, off int64) (n int, err error)

              type PieceCompletion

              type PieceCompletion interface {
              	Close() error

                Implementations track the completion of pieces. It must be concurrent-safe.

                func NewBoltPieceCompletion

                func NewBoltPieceCompletion(dir string) (ret PieceCompletion, err error)

                func NewMapPieceCompletion

                func NewMapPieceCompletion() PieceCompletion

                type PieceCompletionGetSetter

                type PieceCompletionGetSetter interface {
                	Get(metainfo.PieceKey) (Completion, error)
                	Set(_ metainfo.PieceKey, complete bool) error

                type PieceImpl

                type PieceImpl interface {
                	// These interfaces are not as strict as normally required. They can
                	// assume that the parameters are appropriate for the dimensions of the
                	// piece.
                	// Called when the client believes the piece data will pass a hash check.
                	// The storage can move or mark the piece data as read-only as it sees
                	// fit.
                	MarkComplete() error
                	MarkNotComplete() error
                	// Returns true if the piece is complete.
                	Completion() Completion

                  Interacts with torrent piece data.

                  type Torrent

                  type Torrent struct {

                  func (Torrent) Piece

                  func (t Torrent) Piece(p metainfo.Piece) Piece

                  type TorrentImpl

                  type TorrentImpl interface {
                  	Piece(metainfo.Piece) PieceImpl
                  	Close() error

                    Data storage bound to a torrent.