46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package storage
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/anacrolix/torrent/metainfo"
|
|
)
|
|
|
|
type ClientImplCloser interface {
|
|
ClientImpl
|
|
Close() error
|
|
}
|
|
|
|
// Represents data storage for an unspecified torrent.
|
|
type ClientImpl interface {
|
|
OpenTorrent(info *metainfo.Info, infoHash metainfo.Hash) (TorrentImpl, error)
|
|
}
|
|
|
|
// Data storage bound to a torrent.
|
|
type TorrentImpl interface {
|
|
Piece(metainfo.Piece) PieceImpl
|
|
Close() error
|
|
}
|
|
|
|
// Interacts with torrent piece data. Optional interfaces to implement include io.WriterTo, such as
|
|
// when a piece supports a more efficient way to write out incomplete chunks
|
|
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
|
|
}
|
|
|
|
type Completion struct {
|
|
Complete bool
|
|
Ok bool
|
|
}
|