feeds

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2021 License: BSD-3-Clause Imports: 13 Imported by: 11

Documentation

Overview

Package feeds implements generic interfaces and methods for time-based feeds indexing schemes are implemented in subpackages - epochs - sequence

Index

Constants

This section is empty.

Variables

View Source
var ErrFeedTypeNotFound = errors.New("no such feed type")

Functions

func FromChunk

func FromChunk(ch swarm.Chunk) (uint64, []byte, error)

FromChunk parses out the timestamp and the payload

func Latest

func Latest(ctx context.Context, l Lookup, after int64) (swarm.Chunk, error)

Latest looks up the latest update of the feed after is a unix time hint of the latest known update

func NewUpdate

func NewUpdate(f *Feed, idx Index, timestamp int64, payload []byte, sig []byte) (swarm.Chunk, error)

func UpdatedAt

func UpdatedAt(ch swarm.Chunk) (uint64, error)

UpdatedAt extracts the time of feed other than update

Types

type Factory

type Factory interface {
	NewLookup(Type, *Feed) (Lookup, error)
}

Factory creates feed lookups for different types of feeds.

type Feed

type Feed struct {
	Topic []byte
	Owner common.Address
}

Feed is representing an epoch based feed

func New

func New(topic []byte, owner common.Address) *Feed

New constructs an epoch based feed from a keccak256 digest of a plaintext topic and an ether address.

func (*Feed) Update

func (f *Feed) Update(index Index) *Update

Update called on a feed with an index and returns an Update

type Getter

type Getter struct {
	*Feed
	// contains filtered or unexported fields
}

Getter encapsulates a chunk Getter getter and a feed and provides

non-concurrent lookup methods

func NewGetter

func NewGetter(getter storage.Getter, feed *Feed) *Getter

NewGetter constructs a feed Getter

func (*Getter) Get

func (f *Getter) Get(ctx context.Context, i Index) (swarm.Chunk, error)

Get creates an update of the underlying feed at the given epoch and looks it up in the chunk Getter based on its address

type Index

type Index interface {
	encoding.BinaryMarshaler
}

Index is the interface for feed implementations.

type Lookup

type Lookup interface {
	At(ctx context.Context, at, after int64) (chunk swarm.Chunk, currentIndex, nextIndex Index, err error)
}

Lookup is the interface for time based feed lookup

type Putter

type Putter struct {
	*Feed
	// contains filtered or unexported fields
}

Putter encapsulates a chunk store putter and a Feed to store feed updates

func NewPutter

func NewPutter(putter storage.Putter, signer crypto.Signer, topic []byte) (*Putter, error)

NewPutter constructs a feed Putter

func (*Putter) Put

func (u *Putter) Put(ctx context.Context, i Index, at int64, payload []byte) error

Put pushes an update to the feed through the chunk stores

type Type

type Type int
const (
	Sequence Type = iota
	Epoch
)

func (*Type) FromString

func (t *Type) FromString(s string) error

func (Type) String

func (t Type) String() string

type Update

type Update struct {
	*Feed
	// contains filtered or unexported fields
}

Update represents an update instance of a feed, i.e., pairing of a Feed with an Epoch

func (*Update) Address

func (u *Update) Address() (swarm.Address, error)

Address calculates the soc address of a feed update

func (*Update) Id

func (u *Update) Id() ([]byte, error)

Id calculates the identifier if a feed update to be used in single owner chunks

type Updater

type Updater interface {
	Update(ctx context.Context, at int64, payload []byte) error
	Feed() *Feed
}

Updater is the generic interface f

Directories

Path Synopsis
Package epochs implements time-based feeds using epochs as index and provide sequential as well as concurrent lookup algorithms
Package epochs implements time-based feeds using epochs as index and provide sequential as well as concurrent lookup algorithms
Package sequence provides implementation of sequential indexing for time-based feeds this feed type is best suited for - version updates - followed updates - frequent or regular-interval updates
Package sequence provides implementation of sequential indexing for time-based feeds this feed type is best suited for - version updates - followed updates - frequent or regular-interval updates
package testing provides tests for update and resolution of time-based feeds
package testing provides tests for update and resolution of time-based feeds

Jump to

Keyboard shortcuts

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