timer

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2017 License: Apache-2.0 Imports: 4 Imported by: 0

README

timing wheel

License codebeat badge Go Report Card GoDoc Build Status Coverage Status

golang timing wheel timer

Examples

base timer
import (
	"fmt"
	"github.com/vlorc/timer"
)

func main() {
	timing := NewTimingWheel(
    		NewSimpleScheduler(NewSimpleDispatcher()),
    		64,
    		time.Second,
    		64,128,256,512)
    timing.Start()
    timing.After(26 * time.Second, func() {
    	fmt.Println("26 Second")
    	timing.Stop()
    })
    timing.Wait()
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Complete

type Complete func(*Timer) int64

type Dispatcher

type Dispatcher interface {
	Start()
	Stop()
	Dispatch(func())
}

func NewHashDispatcher

func NewHashDispatcher(args ...Dispatcher) Dispatcher

func NewQueueDispatcher

func NewQueueDispatcher(length int, dispatcher Dispatcher) Dispatcher

func NewSimpleDispatcher

func NewSimpleDispatcher() Dispatcher

type EmptyScheduler

type EmptyScheduler struct{}

func (*EmptyScheduler) Schedule

func (e *EmptyScheduler) Schedule(func())

func (*EmptyScheduler) Start

func (e *EmptyScheduler) Start()

func (*EmptyScheduler) Stop

func (e *EmptyScheduler) Stop()

type HashDispatcher

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

func (*HashDispatcher) Dispatch

func (h *HashDispatcher) Dispatch(fn func())

func (*HashDispatcher) Start

func (h *HashDispatcher) Start()

func (*HashDispatcher) Stop

func (h *HashDispatcher) Stop()

type Operation

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

type OperationCode

type OperationCode int8
const (
	OP_REMOVE OperationCode = iota
	OP_AFTER
	OP_AT
)

type QueueDispatcher

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

func (*QueueDispatcher) Dispatch

func (q *QueueDispatcher) Dispatch(fn func())

func (*QueueDispatcher) Start

func (q *QueueDispatcher) Start()

func (*QueueDispatcher) Stop

func (q *QueueDispatcher) Stop()

type Scheduler

type Scheduler interface {
	Start()
	Stop()
	Schedule(func())
}

func NewEmptyScheduler

func NewEmptyScheduler() Scheduler

func NewSimpleScheduler

func NewSimpleScheduler(dispatcher Dispatcher) Scheduler

type SimpleDispatcher

type SimpleDispatcher struct{}

func (*SimpleDispatcher) Dispatch

func (s *SimpleDispatcher) Dispatch(fn func())

func (*SimpleDispatcher) Start

func (s *SimpleDispatcher) Start()

func (*SimpleDispatcher) Stop

func (s *SimpleDispatcher) Stop()

type SimpleScheduler

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

func (*SimpleScheduler) Schedule

func (s *SimpleScheduler) Schedule(fn func())

func (*SimpleScheduler) Start

func (s *SimpleScheduler) Start()

func (*SimpleScheduler) Stop

func (s *SimpleScheduler) Stop()

type Slot

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

func NewSlot

func NewSlot() *Slot

func (*Slot) Back

func (l *Slot) Back() (el *Timer)

func (*Slot) Clear

func (l *Slot) Clear()

func (*Slot) Front

func (l *Slot) Front() *Timer

func (*Slot) Len

func (l *Slot) Len() int

func (*Slot) Pop

func (l *Slot) Pop() (el *Timer)

func (*Slot) Push

func (l *Slot) Push(el *Timer)

func (*Slot) Remove

func (l *Slot) Remove(el *Timer) *Timer

type Timer

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

func NewTimer

func NewTimer(fn func(), count int64) *Timer

func NewTimerCustom

func NewTimerCustom(fn func(), complete Complete, count int64) *Timer

func NewTimerPeriodic

func NewTimerPeriodic(fn func(), times, count int64) *Timer

func NewTimerTable

func NewTimerTable(fn func(), count ...int64) *Timer

func (*Timer) Cancel

func (e *Timer) Cancel()

type TimingWheel

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

func Default

func Default(interval ...time.Duration) *TimingWheel

func NewTimingWheel

func NewTimingWheel(scheduler Scheduler, request int, interval time.Duration, count ...int) *TimingWheel

func (*TimingWheel) Add

func (t *TimingWheel) Add(tm *Timer)

func (*TimingWheel) After

func (t *TimingWheel) After(d time.Duration, fn func()) *Timer

func (*TimingWheel) AfterInterval

func (t *TimingWheel) AfterInterval(d, i time.Duration, fn func()) *Timer

func (*TimingWheel) At

func (t *TimingWheel) At(d time.Time, fn func()) (tm *Timer)

func (*TimingWheel) AtInterval

func (t *TimingWheel) AtInterval(d time.Time, i time.Duration, fn func()) (tm *Timer)

func (*TimingWheel) Cancel

func (t *TimingWheel) Cancel(tm *Timer)

func (*TimingWheel) Count

func (t *TimingWheel) Count() int64

func (*TimingWheel) Interval

func (t *TimingWheel) Interval(i time.Duration, fn func()) *Timer

func (*TimingWheel) Start

func (t *TimingWheel) Start()

func (*TimingWheel) Step

func (t *TimingWheel) Step()

func (*TimingWheel) Stop

func (t *TimingWheel) Stop()

func (*TimingWheel) Wait

func (t *TimingWheel) Wait()

type Wheel

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

func NewWheel

func NewWheel(length int) *Wheel

func (*Wheel) Clear

func (w *Wheel) Clear(i int) *Slot

func (*Wheel) Pop

func (w *Wheel) Pop(i int) *Timer

func (*Wheel) Push

func (w *Wheel) Push(i int, tm *Timer)

func (*Wheel) Slot

func (w *Wheel) Slot(i int) *Slot

func (*Wheel) Step

func (w *Wheel) Step() (int, *Slot)

Source Files

  • dispatcher.go
  • scheduler.go
  • slot.go
  • timer.go
  • timing.go
  • types.go
  • wheel.go

Jump to

Keyboard shortcuts

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