httpserver

package
v0.1.22 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2025 License: MIT Imports: 62 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RequiredBandDown = 500 * 1 << 20 / 8 // 500Mbps 62.5MB/s
	RequiredBandUp   = 200 * 1 << 20 / 8 // 200Mbps 25MB/s

	LowStress    = 0.2 // low stress of peak0. will degrade to peak1
	Peak0LowTask = 1
	Peak1LowTask = 5

	Peak0WindowSize = 60
	Peak1WindowSize = 600
)
View Source
const (
	Pending    taskStatus = "pending"
	InProgress taskStatus = "inprogress"
	Completed  taskStatus = "complete"
	Failed     taskStatus = "failed"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Asset

type Asset interface {
	// GetAsset fetches the asset data for a given CID and returns an io.ReadSeekCloser.
	GetAsset(root cid.Cid) (io.ReadSeekCloser, error)
	// AssetExists checks whether the asset data for a given CID exists or not.
	AssetExists(root cid.Cid) (bool, error)
	// HasBlock checks if a block with the given CID is present in the asset data for a given root CID.
	HasBlock(ctx context.Context, root, block cid.Cid) (bool, error)
	// GetBlock retrieves a block with the given CID from the asset data for a given root CID.
	GetBlock(ctx context.Context, root, block cid.Cid) (blocks.Block, error)
	// SaveUserAsset save user asset to local
	SaveUserAsset(ctx context.Context, userID string, root cid.Cid, assetSize int64, r io.Reader) error
	// SetAssetUploadProgress set progress of upload for asset
	SetAssetUploadProgress(ctx context.Context, root cid.Cid, progress *types.UploadProgress) error
	// GetUploadingAsset get asset which uploading
	GetUploadingAsset(ctx context.Context, root cid.Cid) (*types.UploadingAsset, error)
	// AllocatePathWithSize allocate path for storage file
	AllocatePathWithSize(size int64) (string, error)
	// ListBlocks returns the sub-cids of a certain root-cid
	ListBlocks(ctx context.Context, root cid.Cid) ([]cid.Cid, error)
}

Asset represents an interface for fetching and checking asset data.

type DirectoryResult added in v0.1.11

type DirectoryResult struct {
	Data FileList `json:"data"`
	Code int      `json:"code"`
	Msg  string   `json:"msg"`
}

type FileList added in v0.1.11

type FileList struct {
	FileProperties []FileProperty
	Name           string
	Size           int64
	Total          int
}

type FileProperty added in v0.1.11

type FileProperty struct {
	FileName string
	CID      string
	Size     int64
	Link     string
}

SubAsset the content of directory

type FlowUnit added in v0.1.22

type FlowUnit struct {
	U int64 // upstrear rate
	D int64 // downstrear rate
}

type Handler

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

func (*Handler) ServeHTTP

func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP checks if the request path starts with the IPFS path prefix and delegates to the appropriate handler

type HttpServer

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

func NewHttpServer

func NewHttpServer(opts *HttpServerOptions) *HttpServer

NewHttpServer creates a new HttpServer with the given Asset, Scheduler, and RSA private key.

func (*HttpServer) FirstToken added in v0.1.10

func (hs *HttpServer) FirstToken() string

GetDownloadThreadCount get download thread count of httpserver

func (*HttpServer) NewHandler

func (hs *HttpServer) NewHandler(handler http.Handler) http.Handler

NewHandler creates a new Handler with the given HTTP handler

func (*HttpServer) Stats added in v0.1.22

func (hs *HttpServer) Stats() *types.KeepaliveReq

type HttpServerOptions added in v0.1.10

type HttpServerOptions struct {
	Asset               Asset
	Scheduler           api.Scheduler
	PrivateKey          *rsa.PrivateKey
	Validation          Validation
	APISecret           *jwt.HMACSHA
	MaxSizeOfUploadFile int64
	WebRedirect         string
	RateLimiter         *types.RateLimiter
}

type Monitor added in v0.1.22

type Monitor struct {
	Routes *RouteLoads

	Loads [Peak1WindowSize]FlowUnit

	Peak0 FlowUnit // peak in window
	Peak1 FlowUnit // peak in last 10 rinutes
	Peak2 FlowUnit // peak since last run
	// contains filtered or unexported fields
}

func NewMonitor added in v0.1.22

func NewMonitor() *Monitor

func (*Monitor) GetStats added in v0.1.22

func (m *Monitor) GetStats() *Stats

func (*Monitor) Middleware added in v0.1.22

func (m *Monitor) Middleware(next http.HandlerFunc) http.HandlerFunc

func (*Monitor) ServeHTTP added in v0.1.22

func (m *Monitor) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*Monitor) Start added in v0.1.22

func (m *Monitor) Start()

type ProgressReader added in v0.1.10

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

func (*ProgressReader) Read added in v0.1.10

func (pr *ProgressReader) Read(p []byte) (n int, err error)

type RouteInstance added in v0.1.22

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

RouteInstance should include start and end times, writer and reader, number of bytes read and written, and the route name. Requests that lasted more than 10 minutes and have already ended should be discarded.

func NewRouterInstance added in v0.1.22

func NewRouterInstance(name string, w http.ResponseWriter, r *http.Request) *RouteInstance

func (*RouteInstance) Close added in v0.1.22

func (ri *RouteInstance) Close() error

impl io.ReadCloser

func (*RouteInstance) Header added in v0.1.22

func (ri *RouteInstance) Header() http.Header

impl ResponseWriter

func (*RouteInstance) IsRunning added in v0.1.22

func (ri *RouteInstance) IsRunning() bool

func (*RouteInstance) Read added in v0.1.22

func (ri *RouteInstance) Read(p []byte) (int, error)

impl io.ReadCloser

func (*RouteInstance) Write added in v0.1.22

func (ri *RouteInstance) Write(b []byte) (int, error)

impl ResponseWriter

func (*RouteInstance) WriteHeader added in v0.1.22

func (ri *RouteInstance) WriteHeader(statusCode int)

impl ResponseWriter

type RouteLoads added in v0.1.22

type RouteLoads struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func (*RouteLoads) AddRoute added in v0.1.22

func (rl *RouteLoads) AddRoute(ri *RouteInstance)

func (*RouteLoads) Cleanup added in v0.1.22

func (rl *RouteLoads) Cleanup()

func (*RouteLoads) TaskCount added in v0.1.22

func (rl *RouteLoads) TaskCount() int16

func (*RouteLoads) TaskRunningCount added in v0.1.22

func (rl *RouteLoads) TaskRunningCount() int16

type SpeedCountWriter added in v0.1.11

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

func (*SpeedCountWriter) CostTime added in v0.1.11

func (w *SpeedCountWriter) CostTime() float64

ms

func (*SpeedCountWriter) Header added in v0.1.11

func (w *SpeedCountWriter) Header() http.Header

func (*SpeedCountWriter) PeakSpeed added in v0.1.22

func (w *SpeedCountWriter) PeakSpeed() int64

func (*SpeedCountWriter) Speed added in v0.1.22

func (w *SpeedCountWriter) Speed() int64

func (*SpeedCountWriter) Write added in v0.1.11

func (w *SpeedCountWriter) Write(bytes []byte) (int, error)

func (*SpeedCountWriter) WriteHeader added in v0.1.11

func (w *SpeedCountWriter) WriteHeader(statusCode int)

type Stats added in v0.1.22

type Stats struct {
	Peak             FlowUnit
	Free             FlowUnit
	TaskRunningCount int16
	TaskCount        int16

	Raw *StatsRaw
}

type StatsRaw added in v0.1.22

type StatsRaw struct {
	Peak0   FlowUnit
	Peak1   FlowUnit
	Peak2   FlowUnit
	Current FlowUnit

	Loads  [Peak1WindowSize]FlowUnit
	Routes *RouteLoads
}

type Validation

type Validation interface {
	SetFunc(func() string)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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