piecestore

package
v0.13.6 Latest Latest
Warning

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

Go to latest
Published: Jun 19, 2019 License: AGPL-3.0 Imports: 24 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, monitor *monitor.Service, 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) (err 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) (err 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) (err 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) (err error)

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

type OldConfig added in v0.11.0

type OldConfig struct {
	Path string `help:"path to store data in" default:"$CONFDIR/storage"`

	WhitelistedSatelliteIDs string        `` /* 298-byte string literal not displayed */
	SatelliteIDRestriction  bool          `help:"if true, only allow data from approved satellites" devDefault:"false" releaseDefault:"true"`
	AllocatedDiskSpace      memory.Size   `user:"true" help:"total allocated disk space in bytes" default:"1TB"`
	AllocatedBandwidth      memory.Size   `user:"true" help:"total allocated bandwidth in bytes" default:"2TB"`
	KBucketRefreshInterval  time.Duration `help:"how frequently Kademlia bucket should be refreshed with node stats" default:"1h0m0s"`
}

OldConfig contains everything necessary for a server

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