bucket

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2022 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Licensed to Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Apache Software Foundation (ASF) licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index

Constants

View Source
const (
	DefaultRecentRatio = 0.25
)

Variables

View Source
var (
	ErrInvalidParameter = errors.New("parameters are invalid")
	ErrNoMoreBucket     = errors.New("no more buckets")
)
View Source
var ErrInvalidSize = errors.New("invalid size")

Functions

This section is empty.

Types

type Channel

type Channel chan Status

type Controller

type Controller interface {
	Current() (Reporter, error)
	Next() (Reporter, error)
	OnMove(prev, next Reporter)
}

type EvictFn

type EvictFn func(ctx context.Context, id interface{}) error

type OnAddRecentFn added in v0.2.0

type OnAddRecentFn func() error

type Queue

type Queue interface {
	io.Closer
	Touch(id fmt.Stringer) bool
	Push(ctx context.Context, id fmt.Stringer, fn OnAddRecentFn) error
	Remove(id fmt.Stringer)
	Len() int
	Volume() int
	All() []interface{}
}

func NewQueue

func NewQueue(logger *logger.Logger, size int, maxSize int, clock timestamp.Clock, evictFn EvictFn) (Queue, error)

type Ratio

type Ratio float64

type Reporter

type Reporter interface {
	Report() Channel
	Stop()
	String() string
}

func NewTimeBasedReporter

func NewTimeBasedReporter(timeRange timestamp.TimeRange, clock timestamp.Clock) Reporter

type Status

type Status struct {
	Capacity int
	Volume   int
}

type Strategy

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

func NewStrategy

func NewStrategy(ctrl Controller, options ...StrategyOptions) (*Strategy, error)

func (*Strategy) Close

func (s *Strategy) Close()

func (*Strategy) Run

func (s *Strategy) Run()

func (*Strategy) String added in v0.2.0

func (s *Strategy) String() string

type StrategyOptions

type StrategyOptions func(*Strategy)

func WithLogger

func WithLogger(logger *logger.Logger) StrategyOptions

func WithNextThreshold

func WithNextThreshold(ratio Ratio) StrategyOptions

Jump to

Keyboard shortcuts

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