piecestore

package
v0.20.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2019 License: AGPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInternal is an error class for internal errors.
	ErrInternal = errs.Class("internal")
	// ErrProtocol is an error class for unexpected protocol sequence.
	ErrProtocol = errs.Class("protocol")
	// ErrVerifyUntrusted is an error in case there is a trust issue.
	ErrVerifyUntrusted = errs.Class("untrusted")
)
View Source
var DefaultConfig = Config{
	UploadBufferSize:   256 * memory.KiB.Int64(),
	DownloadBufferSize: 256 * memory.KiB.Int64(),

	InitialStep: 64 * memory.KiB.Int64(),
	MaximumStep: 1 * memory.MiB.Int64(),
}

DefaultConfig are the default params used for upload and download.

View Source
var Error = errs.Class("piecestore")

Error is the default error class for piecestore client.

Functions

This section is empty.

Types

type BufferedDownload

type BufferedDownload struct {
	// contains filtered or unexported fields
}

BufferedDownload implements buffering for download.

func (*BufferedDownload) Close

func (download *BufferedDownload) Close() error

Close closes the buffered download.

func (*BufferedDownload) GetHashAndLimit added in v0.19.0

func (download *BufferedDownload) GetHashAndLimit() (*pb.PieceHash, *pb.OrderLimit)

GetHashAndLimit gets the download's hash and original order limit.

func (*BufferedDownload) Read

func (download *BufferedDownload) Read(p []byte) (int, error)

Read reads from the buffer and downloading in batches once it's empty.

type BufferedUpload

type BufferedUpload struct {
	// contains filtered or unexported fields
}

BufferedUpload implements buffering for an Upload.

func (*BufferedUpload) Cancel

func (upload *BufferedUpload) Cancel(ctx context.Context) (err error)

Cancel aborts the upload.

func (*BufferedUpload) Commit

func (upload *BufferedUpload) Commit(ctx context.Context) (_ *pb.PieceHash, err error)

Commit flushes any remaining content from buffer and commits the upload.

func (*BufferedUpload) Write

func (upload *BufferedUpload) Write(data []byte) (int, error)

Write writes content to the buffer and flushes it to the upload once enough data has been gathered.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client implements uploading, downloading and deleting content from a piecestore.

func Dial added in v0.14.8

func Dial(ctx context.Context, transport transport.Client, target *pb.Node, log *zap.Logger, config Config) (*Client, error)

Dial dials the target piecestore endpoint.

func (*Client) Close

func (client *Client) Close() error

Close closes the underlying connection.

func (*Client) Delete

func (client *Client) Delete(ctx context.Context, limit *pb.OrderLimit, privateKey storj.PiecePrivateKey) (err error)

Delete uses delete order limit to delete a piece on piece store.

func (*Client) Download

func (client *Client) Download(ctx context.Context, limit *pb.OrderLimit, piecePrivateKey storj.PiecePrivateKey, offset, size int64) (_ Downloader, err error)

Download starts a new download using the specified order limit at the specified offset and size.

func (*Client) Retain added in v0.15.0

func (client *Client) Retain(ctx context.Context, req *pb.RetainRequest) (err error)

Retain uses a bloom filter to tell the piece store which pieces to keep.

func (*Client) Upload

func (client *Client) Upload(ctx context.Context, limit *pb.OrderLimit, piecePrivateKey storj.PiecePrivateKey) (_ Uploader, err error)

Upload initiates an upload to the storage node.

func (*Client) VerifyPieceHash

func (client *Client) VerifyPieceHash(ctx context.Context, peer *identity.PeerIdentity, limit *pb.OrderLimit, hash *pb.PieceHash, expectedHash []byte) (err error)

VerifyPieceHash verifies piece hash which is sent by peer.

type Config

type Config struct {
	UploadBufferSize   int64
	DownloadBufferSize int64

	InitialStep int64
	MaximumStep int64
}

Config defines piecestore client parameters fro upload and download.

type Download

type Download struct {
	// contains filtered or unexported fields
}

Download implements downloading from a piecestore.

func (*Download) Close

func (client *Download) Close() (err error)

Close closes the downloading.

func (*Download) GetHashAndLimit added in v0.19.0

func (client *Download) GetHashAndLimit() (*pb.PieceHash, *pb.OrderLimit)

GetHashAndLimit gets the download's hash and original order limit.

func (*Download) Read

func (client *Download) Read(data []byte) (read int, err error)

Read downloads data from the storage node allocating as necessary.

type Downloader

type Downloader interface {
	Read([]byte) (int, error)
	Close() error
	GetHashAndLimit() (*pb.PieceHash, *pb.OrderLimit)
}

Downloader is interface that can be used for downloading content. It matches signature of `io.ReadCloser`, with one extra function, GetHashAndLimit(), used for accessing information during GET_REPAIR.

func NewBufferedDownload

func NewBufferedDownload(download *Download, size int) Downloader

NewBufferedDownload creates a buffered download with the specified size.

type LockingDownload

type LockingDownload struct {
	// contains filtered or unexported fields
}

LockingDownload adds a lock around download making it safe to use concurrently. TODO: this shouldn't be needed.

func (*LockingDownload) Close

func (download *LockingDownload) Close() error

Close closes the deownload.

func (*LockingDownload) GetHashAndLimit added in v0.19.0

func (download *LockingDownload) GetHashAndLimit() (*pb.PieceHash, *pb.OrderLimit)

GetHashAndLimit gets the download's hash and original order limit

func (*LockingDownload) Read

func (download *LockingDownload) Read(p []byte) (int, error)

Read downloads content.

type LockingUpload

type LockingUpload struct {
	// contains filtered or unexported fields
}

LockingUpload adds a lock around upload making it safe to use concurrently. TODO: this shouldn't be needed.

func (*LockingUpload) Cancel

func (upload *LockingUpload) Cancel(ctx context.Context) (err error)

Cancel aborts the upload.

func (*LockingUpload) Commit

func (upload *LockingUpload) Commit(ctx context.Context) (_ *pb.PieceHash, err error)

Commit finishes the upload.

func (*LockingUpload) Write

func (upload *LockingUpload) Write(p []byte) (int, error)

Write uploads data.

type ReadBuffer

type ReadBuffer struct {
	// contains filtered or unexported fields
}

ReadBuffer implements buffered reading with an error.

func (*ReadBuffer) Empty

func (buffer *ReadBuffer) Empty() bool

Empty checks whether buffer needs to be filled.

func (*ReadBuffer) Error

func (buffer *ReadBuffer) Error() error

Error returns an error if it was encountered.

func (*ReadBuffer) Errored

func (buffer *ReadBuffer) Errored() bool

Errored returns whether the buffer contains an error.

func (*ReadBuffer) Fill

func (buffer *ReadBuffer) Fill(data []byte)

Fill fills the buffer with the specified bytes.

func (*ReadBuffer) IncludeError

func (buffer *ReadBuffer) IncludeError(err error)

IncludeError adds error at the end of the buffer.

func (*ReadBuffer) Read

func (buffer *ReadBuffer) Read(data []byte) (n int, err error)

Read reads from the buffer.

type Upload

type Upload struct {
	// contains filtered or unexported fields
}

Upload implements uploading to the storage node.

func (*Upload) Cancel

func (client *Upload) Cancel(ctx context.Context) (err error)

Cancel cancels the uploading.

func (*Upload) Commit

func (client *Upload) Commit(ctx context.Context) (_ *pb.PieceHash, err error)

Commit finishes uploading by sending the piece-hash and retrieving the piece-hash.

func (*Upload) Write

func (client *Upload) Write(data []byte) (written int, err error)

Write sends data to the storagenode allocating as necessary.

type Uploader

type Uploader interface {
	// Write uploads data to the storage node.
	Write([]byte) (int, error)
	// Cancel cancels the upload.
	Cancel(context.Context) error
	// Commit finalizes the upload.
	Commit(context.Context) (*pb.PieceHash, error)
}

Uploader defines the interface for uploading a piece.

func NewBufferedUpload

func NewBufferedUpload(upload *Upload, size int) Uploader

NewBufferedUpload creates buffered upload with the specified size.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL