fluxmonitor

package
v0.8.2 Latest Latest
Warning

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

Go to latest
Published: Apr 20, 2020 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotEligible      = errors.New("not eligible to submit")
	ErrUnderfunded      = errors.New("aggregator is underfunded")
	ErrPaymentTooLow    = errors.New("round payment amount < minimum contract payment")
	ErrAlreadySubmitted = errors.Errorf("already submitted for round")
)

Functions

func ExtractFeedURLs

func ExtractFeedURLs(feeds models.Feeds, orm *orm.ORM) ([]*url.URL, error)

ExtractFeedURLs extracts a list of url.URLs from the feeds parameter of the initiator params

func GetBridgeURLFromName

func GetBridgeURLFromName(name string, orm *orm.ORM) (*url.URL, error)

GetBridgeURLFromName looks up a bridge in the DB by name, then extracts the url

func OutsideDeviation

func OutsideDeviation(curAnswer, nextAnswer decimal.Decimal, threshold float64) bool

OutsideDeviation checks whether the next price is outside the threshold.

Types

type DeviationChecker

type DeviationChecker interface {
	Start()
	Stop()
}

DeviationChecker encapsulate methods needed to initialize and check prices for price deviations.

type DeviationCheckerFactory

type DeviationCheckerFactory interface {
	New(models.Initiator, RunManager, *orm.ORM, time.Duration) (DeviationChecker, error)
}

DeviationCheckerFactory holds the New method needed to create a new instance of a DeviationChecker.

type Fetcher

type Fetcher interface {
	Fetch() (decimal.Decimal, error)
}

Fetcher is the interface encapsulating all functionality needed to retrieve a price.

type PollingDeviationChecker

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

PollingDeviationChecker polls external price adapters via HTTP to check for price swings.

func NewPollingDeviationChecker

func NewPollingDeviationChecker(
	store *store.Store,
	fluxAggregator contracts.FluxAggregator,
	initr models.Initiator,
	runManager RunManager,
	fetcher Fetcher,
	pollDelay time.Duration,
) (*PollingDeviationChecker, error)

NewPollingDeviationChecker returns a new instance of PollingDeviationChecker.

func (*PollingDeviationChecker) HandleLog

func (p *PollingDeviationChecker) HandleLog(log interface{}, err error)

func (*PollingDeviationChecker) OnConnect

func (p *PollingDeviationChecker) OnConnect()

func (*PollingDeviationChecker) OnDisconnect

func (p *PollingDeviationChecker) OnDisconnect()

func (*PollingDeviationChecker) Start

func (p *PollingDeviationChecker) Start()

Start begins the CSP consumer in a single goroutine to poll the price adapters and listen to NewRound events.

func (*PollingDeviationChecker) Stop

func (p *PollingDeviationChecker) Stop()

Stop stops this instance from polling, cleaning up resources.

type ResettableTicker

type ResettableTicker struct {
	*time.Ticker
	// contains filtered or unexported fields
}

func NewResettableTicker

func NewResettableTicker(d time.Duration) *ResettableTicker

func (*ResettableTicker) Reset

func (t *ResettableTicker) Reset()

func (*ResettableTicker) Stop

func (t *ResettableTicker) Stop()

func (*ResettableTicker) Tick

func (t *ResettableTicker) Tick() <-chan time.Time

type RunManager

type RunManager interface {
	Create(
		jobSpecID *models.ID,
		initiator *models.Initiator,
		creationHeight *big.Int,
		runRequest *models.RunRequest,
	) (*models.JobRun, error)
}

type Service

type Service interface {
	AddJob(models.JobSpec) error
	RemoveJob(*models.ID)
	Start() error
	Stop()
}

Service is the interface encapsulating all functionality needed to listen to price deviations and new round requests.

func New

func New(
	store *store.Store,
	runManager RunManager,
) Service

New creates a service that manages a collection of DeviationCheckers, one per initiator of type InitiatorFluxMonitor for added jobs.

Jump to

Keyboard shortcuts

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