10 "github.com/anacrolix/squirrel"
12 "github.com/anacrolix/torrent/metainfo"
13 "github.com/anacrolix/torrent/storage"
16 // A convenience function that creates a connection pool, resource provider, and a pieces storage
17 // ClientImpl and returns them all with a Close attached.
18 func NewDirectStorage(opts NewDirectStorageOpts) (_ storage.ClientImplCloser, err error) {
19 cache, err := squirrel.NewCache(opts)
25 cache.GetCapacity}, nil
30 capacity func() *int64
33 func (c *client) OpenTorrent(info *metainfo.Info, infoHash metainfo.Hash) (storage.TorrentImpl, error) {
35 return storage.TorrentImpl{Piece: t.Piece, Close: t.Close, Capacity: &c.capacity}, nil
42 func (t torrent) Piece(p metainfo.Piece) storage.PieceImpl {
50 ret.ReaderAt = &ret.sb
51 ret.WriterAt = &ret.sb
55 func (t torrent) Close() error {
65 func (p piece) MarkComplete() error {
66 return p.sb.SetTag("verified", true)
69 func (p piece) MarkNotComplete() error {
70 return p.sb.SetTag("verified", false)
73 func (p piece) Completion() (ret storage.Completion) {
74 err := p.sb.GetTag("verified", func(stmt *sqlite.Stmt) {
75 ret.Complete = stmt.ColumnInt(0) != 0