collection

package
v1.1.3 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2021 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bucket

type Bucket struct {
	Sum   float64
	Count int64
}

Bucket defines the bucket that holds sum and num of additions.

type Cache

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

func NewCache

func NewCache(expire time.Duration, opts ...CacheOption) (*Cache, error)

func (*Cache) Del

func (c *Cache) Del(key string)

func (*Cache) Get

func (c *Cache) Get(key string) (interface{}, bool)

func (*Cache) Set

func (c *Cache) Set(key string, value interface{})

func (*Cache) Take

func (c *Cache) Take(key string, fetch func() (interface{}, error)) (interface{}, error)

type CacheOption

type CacheOption func(cache *Cache)

func WithLimit

func WithLimit(limit int) CacheOption

func WithName

func WithName(name string) CacheOption

type Execute

type Execute func(key, value interface{})

type Queue

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

func NewQueue

func NewQueue(size int) *Queue

func (*Queue) Empty

func (q *Queue) Empty() bool

func (*Queue) Put

func (q *Queue) Put(element interface{})

func (*Queue) Take

func (q *Queue) Take() (interface{}, bool)

type Ring

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

func NewRing

func NewRing(n int) *Ring

func (*Ring) Add

func (r *Ring) Add(v interface{})

func (*Ring) Take

func (r *Ring) Take() []interface{}

type RollingWindow

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

RollingWindow defines a rolling window to calculate the events in buckets with time interval.

func NewRollingWindow

func NewRollingWindow(size int, interval time.Duration, opts ...RollingWindowOption) *RollingWindow

NewRollingWindow returns a RollingWindow that with size buckets and time interval, use opts to customize the RollingWindow.

func (*RollingWindow) Add

func (rw *RollingWindow) Add(v float64)

Add adds value to current bucket.

func (*RollingWindow) Reduce

func (rw *RollingWindow) Reduce(fn func(b *Bucket))

Reduce runs fn on all buckets, ignore current bucket if ignoreCurrent was set.

type RollingWindowOption

type RollingWindowOption func(rollingWindow *RollingWindow)

RollingWindowOption let callers customize the RollingWindow.

func IgnoreCurrentBucket

func IgnoreCurrentBucket() RollingWindowOption

IgnoreCurrentBucket lets the Reduce call ignore current bucket.

type SafeMap

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

SafeMap provides a map alternative to avoid memory leak. This implementation is not needed until issue below fixed. https://github.com/golang/go/issues/20135

func NewSafeMap

func NewSafeMap() *SafeMap

func (*SafeMap) Del

func (m *SafeMap) Del(key interface{})

func (*SafeMap) Get

func (m *SafeMap) Get(key interface{}) (interface{}, bool)

func (*SafeMap) Set

func (m *SafeMap) Set(key, value interface{})

func (*SafeMap) Size

func (m *SafeMap) Size() int

type Set

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

Set is not thread-safe, for concurrent use, make sure to use it with synchronization.

func NewSet

func NewSet() *Set

func NewUnmanagedSet

func NewUnmanagedSet() *Set

func (*Set) Add

func (s *Set) Add(i ...interface{})

func (*Set) AddInt

func (s *Set) AddInt(ii ...int)

func (*Set) AddInt64

func (s *Set) AddInt64(ii ...int64)

func (*Set) AddStr

func (s *Set) AddStr(ss ...string)

func (*Set) AddUint

func (s *Set) AddUint(ii ...uint)

func (*Set) AddUint64

func (s *Set) AddUint64(ii ...uint64)

func (*Set) Contains

func (s *Set) Contains(i interface{}) bool

func (*Set) Count

func (s *Set) Count() int

func (*Set) Keys

func (s *Set) Keys() []interface{}

func (*Set) KeysInt

func (s *Set) KeysInt() []int

func (*Set) KeysInt64

func (s *Set) KeysInt64() []int64

func (*Set) KeysStr

func (s *Set) KeysStr() []string

func (*Set) KeysUint

func (s *Set) KeysUint() []uint

func (*Set) KeysUint64

func (s *Set) KeysUint64() []uint64

func (*Set) Remove

func (s *Set) Remove(i interface{})

type TimingWheel

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

func NewTimingWheel

func NewTimingWheel(interval time.Duration, numSlots int, execute Execute) (*TimingWheel, error)

func (*TimingWheel) Drain

func (tw *TimingWheel) Drain(fn func(key, value interface{}))

func (*TimingWheel) MoveTimer

func (tw *TimingWheel) MoveTimer(key interface{}, delay time.Duration)

func (*TimingWheel) RemoveTimer

func (tw *TimingWheel) RemoveTimer(key interface{})

func (*TimingWheel) SetTimer

func (tw *TimingWheel) SetTimer(key, value interface{}, delay time.Duration)

func (*TimingWheel) Stop

func (tw *TimingWheel) Stop()

Jump to

Keyboard shortcuts

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