From ef39f408fe7cb1fa4f5b38b9166da18a2282b066 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Mon, 24 May 2021 17:38:09 +1000 Subject: [PATCH] Add storage/disabled The default storage will create empty files on torrent open, which is undesirable in some circumstances. This storage implementation is explicit about not storing anything. --- storage/disabled/disabled.go | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 storage/disabled/disabled.go diff --git a/storage/disabled/disabled.go b/storage/disabled/disabled.go new file mode 100644 index 00000000..22d51434 --- /dev/null +++ b/storage/disabled/disabled.go @@ -0,0 +1,58 @@ +package disabled + +import ( + "errors" + + "github.com/anacrolix/torrent/metainfo" + "github.com/anacrolix/torrent/storage" +) + +type Client struct{} + +var capacity int64 + +func (c Client) OpenTorrent(info *metainfo.Info, infoHash metainfo.Hash) (storage.TorrentImpl, error) { + capFunc := func() *int64 { + return &capacity + } + return storage.TorrentImpl{ + Piece: func(piece metainfo.Piece) storage.PieceImpl { + return Piece{} + }, + Close: func() error { + return nil + }, + Capacity: &capFunc, + }, nil +} + +func (c Client) capacity() *int64 { + return &capacity +} + +type Piece struct{} + +func (Piece) ReadAt(p []byte, off int64) (n int, err error) { + err = errors.New("disabled") + return +} + +func (Piece) WriteAt(p []byte, off int64) (n int, err error) { + err = errors.New("disabled") + return +} + +func (Piece) MarkComplete() error { + return errors.New("disabled") +} + +func (Piece) MarkNotComplete() error { + return errors.New("disabled") +} + +func (Piece) Completion() storage.Completion { + return storage.Completion{ + Complete: false, + Ok: true, + } +}