storage

package
v2.0.3-alpha.0 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2022 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultMaxSize is the default maximum size of record file
	DefaultMaxSize = 100

	// DefaultMaxBackups is the default maximum count of backup
	DefaultMaxBackups = 10

	// DefaultBufferSize is the default size of buffer container
	DefaultBufferSize = 100
)
View Source
const (
	// RecordFilePrefix is prefix of record file name
	RecordFilePrefix = "record"

	// RecordFileExt is extension of record file name
	RecordFileExt = "csv"
)
View Source
const (
	// Peer has been downloaded successfully
	PeerStateSucceeded = iota

	// Peer has been downloaded failed
	PeerStateFailed

	// Peer has been back-to-source downloaded successfully
	PeerStateBackToSourceSucceeded

	// Peer has been back-to-source downloaded failed
	PeerStateBackToSourceFailed
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Option

type Option func(s *storage)

Option is a functional option for configuring the Storage

func WithBufferSize

func WithBufferSize(bufferSize int) Option

WithCacheSize sets the size of buffer container, if the buffer is full, write all the records in the buffer to the file

func WithMaxBackups

func WithMaxBackups(maxBackups int) Option

WithMaxBackups sets the maximum number of storage files to retain

func WithMaxSize

func WithMaxSize(maxSize int) Option

WithMaxSize sets the maximum size in megabytes of storage file

type Record

type Record struct {
	// ID is peer id
	ID string `csv:"id"`

	// IP is host ip
	IP string `csv:"ip"`

	// Hostname is host name
	Hostname string `csv:"hostname"`

	// BizTag is peer biz tag
	BizTag string `csv:"bizTag"`

	// Cost is the task download time(millisecond)
	Cost uint32 `csv:"cost"`

	// PieceCount is total piece count
	PieceCount int32 `csv:"pieceCount"`

	// TotalPieceCount is total piece count
	TotalPieceCount int32 `csv:"totalPieceCount"`

	// ContentLength is task total content length
	ContentLength int64 `csv:"contentLength"`

	// SecurityDomain is security domain of host
	SecurityDomain string `csv:"securityDomain"`

	// IDC is internet data center of host
	IDC string `csv:"idc"`

	// NetTopology is network topology of host
	// Example: switch|router|...
	NetTopology string `csv:"netTopology"`

	// Location is location of host
	// Example: country|province|...
	Location string `csv:"location"`

	// FreeUploadLoad is free upload load of host
	FreeUploadLoad int32 `csv:"freeUpoladLoad"`

	// State is the download state of the peer
	State int `csv:"state"`

	// CreateAt is peer create nanosecond time
	CreateAt int64 `csv:"createAt"`

	// UpdateAt is peer update nanosecond time
	UpdateAt int64 `csv:"updateAt"`

	// ParentID is parent peer id
	ParentID string `csv:"parentID"`

	// ParentIP is parent host ip
	ParentIP string `csv:"parentIP"`

	// ParentHostname is parent host name
	ParentHostname string `csv:"parentHostname"`

	// ParentBizTag is parent peer biz tag
	ParentBizTag string `csv:"parentBizTag"`

	// ParentPieceCount is parent total piece count
	ParentPieceCount int32 `csv:"parentPieceCount"`

	// ParentSecurityDomain is parent security domain of host
	ParentSecurityDomain string `csv:"parentSecurityDomain"`

	// ParentIDC is parent internet data center of host
	ParentIDC string `csv:"parentIDC"`

	// ParentNetTopology is parent network topology of host
	// Example: switch|router|...
	ParentNetTopology string `csv:"parentNetTopology"`

	// ParentLocation is parent location of host
	// Example: country|province|...
	ParentLocation string `csv:"parentLocation"`

	// ParentFreeUploadLoad is parent free upload load of host
	ParentFreeUploadLoad int32 `csv:"parentFreeUploadLoad"`

	// ParentIsCDN is used as tag cdn
	ParentIsCDN bool `csv:"parentIsCDN"`

	// ParentCreateAt is parent peer create nanosecond time
	ParentCreateAt int64 `csv:"parentCreateAt"`

	// ParentUpdateAt is parent peer update nanosecond time
	ParentUpdateAt int64 `csv:"parentUpdateAt"`
}

Record contains content for record

type Storage

type Storage interface {
	// Create inserts the record into csv file
	Create(Record) error

	// List returns all of records in csv file
	List() ([]Record, error)

	// Clear removes all record files
	Clear() error
}

Storage is the interface used for storage

func New

func New(baseDir string, options ...Option) (Storage, error)

New returns a new Storage instence

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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