piecestore

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2019 License: AGPL-3.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// Error is the default error class for piecestore errors
	Error = errs.Class("piecestore")
	// ErrProtocol is the default error class for protocol errors.
	ErrProtocol = errs.Class("piecestore protocol")
	// ErrInternal is the default error class for internal piecestore errors.
	ErrInternal = errs.Class("piecestore internal")
)
View Source
var (
	// ErrVerifyNotAuthorized is returned when the one submitting the action is not authorized to perform that action.
	ErrVerifyNotAuthorized = errs.Class("not authorized")
	// ErrVerifyUntrusted is returned when action is not trusted.
	ErrVerifyUntrusted = errs.Class("untrusted")
	// ErrVerifyDuplicateRequest is returned when serial number has been already used to submit an action.
	ErrVerifyDuplicateRequest = errs.Class("duplicate request")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	ExpirationGracePeriod time.Duration `help:"how soon before expiration date should things be considered expired" default:"48h0m0s"`

	Monitor monitor.Config
	Sender  orders.SenderConfig
}

Config defines parameters for piecestore endpoint.

type Endpoint

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

Endpoint implements uploading, downloading and deleting for a storage node.

func NewEndpoint

func NewEndpoint(log *zap.Logger, signer signing.Signer, trust *trust.Pool, store *pieces.Store, pieceinfo pieces.DB, orders orders.DB, usage bandwidth.DB, usedSerials UsedSerials, config Config) (*Endpoint, error)

NewEndpoint creates a new piecestore endpoint.

func (*Endpoint) Delete

func (endpoint *Endpoint) Delete(ctx context.Context, delete *pb.PieceDeleteRequest) (_ *pb.PieceDeleteResponse, err error)

Delete handles deleting a piece on piece store.

func (*Endpoint) Download

func (endpoint *Endpoint) Download(stream pb.Piecestore_DownloadServer) (err error)

Download implements downloading a piece from piece store.

func (*Endpoint) IsExpired

func (endpoint *Endpoint) IsExpired(expiration *timestamp.Timestamp) bool

IsExpired checks whether the date has already expired (with a threshold) at the time of calling this function.

func (*Endpoint) SaveOrder

func (endpoint *Endpoint) SaveOrder(ctx context.Context, limit *pb.OrderLimit2, order *pb.Order2, uplink *identity.PeerIdentity)

SaveOrder saves the order with all necessary information. It assumes it has been already verified.

func (*Endpoint) Upload

func (endpoint *Endpoint) Upload(stream pb.Piecestore_UploadServer) (err error)

Upload handles uploading a piece on piece store.

func (*Endpoint) VerifyOrder

func (endpoint *Endpoint) VerifyOrder(ctx context.Context, peer *identity.PeerIdentity, limit *pb.OrderLimit2, order *pb.Order2, largestOrderAmount int64) error

VerifyOrder verifies that the order corresponds to the order limit and has all the necessary fields.

func (*Endpoint) VerifyOrderLimit

func (endpoint *Endpoint) VerifyOrderLimit(ctx context.Context, limit *pb.OrderLimit2) error

VerifyOrderLimit verifies that the order limit is properly signed and has sane values. It also verifies that the serial number has not been used.

func (*Endpoint) VerifyOrderLimitSignature

func (endpoint *Endpoint) VerifyOrderLimitSignature(ctx context.Context, limit *pb.OrderLimit2) error

VerifyOrderLimitSignature verifies that the order limit signature is valid.

func (*Endpoint) VerifyPieceHash

func (endpoint *Endpoint) VerifyPieceHash(ctx context.Context, peer *identity.PeerIdentity, limit *pb.OrderLimit2, hash *pb.PieceHash, expectedHash []byte) error

VerifyPieceHash verifies whether the piece hash is properly signed and matches the locally computed hash.

type SerialNumberFn

type SerialNumberFn func(satelliteID storj.NodeID, serialNumber storj.SerialNumber, expiration time.Time)

SerialNumberFn is callback from IterateAll

type UsedSerials

type UsedSerials interface {
	// Add adds a serial to the database.
	Add(ctx context.Context, satelliteID storj.NodeID, serialNumber storj.SerialNumber, expiration time.Time) error
	// DeleteExpired deletes expired serial numbers
	DeleteExpired(ctx context.Context, now time.Time) error

	// IterateAll iterates all serials.
	// Note, this will lock the database and should only be used during startup.
	IterateAll(ctx context.Context, fn SerialNumberFn) error
}

UsedSerials is a persistent store for serial numbers. TODO: maybe this should be in orders.UsedSerials

Jump to

Keyboard shortcuts

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