Version: v2.1.1+incompatible Latest Latest

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

Go to latest
Published: May 22, 2017 License: BSD-3-Clause Imports: 1 Imported by: 0



Package history implements a circular buffer with adjacent-item deduplication.



This section is empty.


This section is empty.


This section is empty.


type Deduplicable

type Deduplicable interface {
	// IsDuplicate returns true if other is considered to be a
	// duplicate of the calling instance.
	IsDuplicate(interface{}) bool

Deduplicable is an interface that records should implement if the history should perform their deduplication. An example would be deduplicating records whose only difference is their timestamp.

type History

type History struct {
	// contains filtered or unexported fields

History is a data structure that allows you to keep some number of records.

func New

func New(length int) *History

New returns a History with the specified maximum length.

func (*History) Add

func (history *History) Add(record interface{})

Add a new record in a threadsafe manner. If record implements Deduplicable, and IsDuplicate returns true when called on the last previously added record, it will not be added.

func (*History) Latest

func (history *History) Latest() interface{}

Latest returns the record most recently passed to Add(), regardless of whether it was actually added or dropped as a duplicate.

func (*History) Records

func (history *History) Records() []interface{}

Records returns the kept records in reverse chronological order in a threadsafe manner.

Source Files

Jump to

Keyboard shortcuts

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