watcher

package
v0.6.4-beta Latest Latest
Warning

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

Go to latest
Published: Jun 5, 2023 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const Subsystem = "WCHR"

Variables

This section is empty.

Functions

func NewController

func NewController(cfg *CtrlConfig) *controller

NewController returns an internal struct type that implements the Controller interface.

func NewExpiryWatcher

func NewExpiryWatcher(handlers EventHandler) *expiryWatcher

NewExpiryWatcher instantiates a new ExpiryWatcher.

func UseLogger

func UseLogger(logger btclog.Logger)

UseLogger uses a specified Logger to output package logging info. This should be used in preference to SetLogWriter if the caller is also using btclog.

Types

type Controller

type Controller interface {
	// Start allows the Controller to begin accepting watch requests.
	Start() error

	// Stop safely stops any ongoing requests within the Controller.
	Stop()

	// WatchAccountConf watches a new account on-chain for its confirmation. Only
	// one conf watcher per account can be used at any time.
	//
	// NOTE: If there is a previous conf watcher for the given account that has not
	// finished yet, it will be canceled!
	WatchAccountConf(traderKey *btcec.PublicKey,
		txHash chainhash.Hash, script []byte, numConfs, heightHint uint32) error

	// CancelAccountConf cancels the conf watcher of the given account, if one is
	// active.
	CancelAccountConf(traderKey *btcec.PublicKey)

	// WatchAccountSpend watches for the spend of an account. Only one spend watcher
	// per account can be used at any time.
	//
	// NOTE: If there is a previous spend watcher for the given account that has not
	// finished yet, it will be canceled!
	WatchAccountSpend(traderKey *btcec.PublicKey,
		accountPoint wire.OutPoint, script []byte, heightHint uint32) error

	// CancelAccountSpend cancels the spend watcher of the given account, if one is
	// active.
	CancelAccountSpend(traderKey *btcec.PublicKey)

	// WatchAccountExpiration watches for the expiration of an account on-chain.
	// Successive calls for the same account will cancel any previous expiration
	// watch requests and the new expiration will be tracked instead.
	WatchAccountExpiration(traderKey *btcec.PublicKey, expiry uint32)
}

Controller is the interface used by other components to communicate with the watcher.

type CtrlConfig

type CtrlConfig struct {
	// ChainNotifier is responsible for requesting confirmation and spend
	// notifications for accounts.
	ChainNotifier lndclient.ChainNotifierClient

	// Handlers define the handler to be used after receiving every event.
	Handlers EventHandler
}

CtrlConfig contains all of the Controller's dependencies in order to carry out its duties.

type EventHandler

type EventHandler interface {
	// HandleAccountConf abstracts the operations that should be performed
	// for an account once we detect its confirmation. The account is
	// identified by its user sub key (i.e., trader key).
	HandleAccountConf(*btcec.PublicKey, *chainntnfs.TxConfirmation) error

	// HandleAccountSpend abstracts the operations that should be performed
	// for an account once we detect its spend. The account is identified by
	// its user sub key (i.e., trader key).
	HandleAccountSpend(*btcec.PublicKey, *chainntnfs.SpendDetail) error

	// HandleAccountExpiry the operations that should be perform for an
	// account once it's expired. The account is identified by its user sub
	// key (i.e., trader key).
	HandleAccountExpiry(*btcec.PublicKey, uint32) error
}

EventHandler is the interface used by other components to handle the different watcher events.

type ExpiryWatcher

type ExpiryWatcher interface {
	// NewBlock updates the current bestHeight and handles overdue
	// expirations.
	NewBlock(bestHeight uint32)

	// AddAccountExpiration creates or updates the existing record for the
	// traderKey.
	AddAccountExpiration(traderKey *btcec.PublicKey, expiry uint32)
}

ExpiryWatcher is the interface for the component in charge of the accounts' expiration.

Jump to

Keyboard shortcuts

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