revcache

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Mar 30, 2020 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FilterNew added in v0.3.1

func FilterNew(ctx context.Context, revCache RevCache,
	revocations []*path_mgmt.SignedRevInfo) ([]*path_mgmt.SignedRevInfo, error)

FilterNew filters the given revocations against the revCache, only the ones which are not in the cache are returned. This is a convenience wrapper around the Revocations type and its filter new method.

func NewCleaner added in v0.4.0

func NewCleaner(rc RevCache, s string) *cleaner.Cleaner

NewCleaner creates a cleaner task that deletes expired revocations.

func NoRevokedHopIntf added in v0.4.0

func NoRevokedHopIntf(ctx context.Context, revCache RevCache,
	s *seg.PathSegment) (bool, error)

NoRevokedHopIntf returns true if there is no on-segment revocation.

func RelevantRevInfos added in v0.4.0

func RelevantRevInfos(ctx context.Context, revCache RevCache,
	allSegs ...[]*seg.PathSegment) ([]*path_mgmt.SignedRevInfo, error)

RelevantRevInfos finds all revocations for the given segments.

Types

type Key

type Key struct {
	IA   addr.IA
	IfId common.IFIDType
}

Key denotes the key for the revocation cache.

func NewKey

func NewKey(ia addr.IA, ifId common.IFIDType) *Key

NewKey creates a new key for the revocation cache.

func (Key) String

func (k Key) String() string

type KeySet added in v0.4.0

type KeySet map[Key]struct{}

KeySet is a set of keys.

func SingleKey added in v0.4.0

func SingleKey(ia addr.IA, ifId common.IFIDType) KeySet

SingleKey is a convenience function to return a KeySet with a single key.

type ResultChan added in v0.4.0

type ResultChan <-chan RevOrErr

ResultChan is a channel of results.

type RevCache

type RevCache interface {
	// Get items with the given keys from the cache. Returns all present requested items that are
	// not expired or an error if the query failed.
	Get(ctx context.Context, keys KeySet) (Revocations, error)
	// GetAll returns a channel that will provide all items in the revocation cache. If the cache
	// can't prepare the result channel a nil channel and the error are returned. If the querying
	// succeeded the channel will contain the revocations in the cache, or an error if the stored
	// data could not be parsed. Note that implementations can spawn a goroutine to fill the
	// channel, which means the channel must be fully drained to guarantee the destruction of the
	// goroutine.
	GetAll(ctx context.Context) (ResultChan, error)
	// Insert inserts or updates the given revocation into the cache.
	// Returns whether an insert was performed.
	Insert(ctx context.Context, rev *path_mgmt.SignedRevInfo) (bool, error)
	// DeleteExpired deletes expired entries from the cache.
	// Users of the revcache should make sure to periodically call this method to prevent an
	// ever growing cache.
	// Returns the amount of deleted entries.
	DeleteExpired(ctx context.Context) (int64, error)
	db.LimitSetter
	io.Closer
}

RevCache is a cache for revocations. Revcache implementations must be safe for concurrent usage.

type RevOrErr added in v0.4.0

type RevOrErr struct {
	Rev *path_mgmt.SignedRevInfo
	Err error
}

RevOrErr is either a revocation or an error.

type Revocations added in v0.4.0

type Revocations map[Key]*path_mgmt.SignedRevInfo

Revocations is the map of revocations.

func RevocationToMap added in v0.4.0

func RevocationToMap(revs []*path_mgmt.SignedRevInfo) (Revocations, error)

RevocationToMap converts a slice of revocations to a revocation map. If extracting the info field fails from a revocation, nil and the error is returned.

func (Revocations) FilterNew added in v0.4.0

func (r Revocations) FilterNew(ctx context.Context, revCache RevCache) error

FilterNew drops all revocations in r that are already in the revCache.

func (Revocations) Keys added in v0.4.0

func (r Revocations) Keys() KeySet

Keys returns the set of keys in this revocation map.

func (Revocations) ToSlice added in v0.4.0

func (r Revocations) ToSlice() []*path_mgmt.SignedRevInfo

ToSlice extracts the values from this revocation map.

Directories

Path Synopsis
Package mock_revcache is a generated GoMock package.
Package mock_revcache is a generated GoMock package.

Jump to

Keyboard shortcuts

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