Documentation

Overview

    Package storage implements storage backends for package torrent.

    Index

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    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)

      Types

      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 {
              	PieceImpl
              	// 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 {
              	PieceCompletionGetSetter
              	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.
                	io.ReaderAt
                	io.WriterAt
                	// 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 {
                  	TorrentImpl
                  }

                  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.