service

package
v0.34.4 Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2021 License: Apache-2.0 Imports: 32 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewBlockConsumer added in v0.28.0

func NewBlockConsumer(chainID string, projection *sqlsol.Projection, opt sqlsol.SpecOpt, getEventSpec EventSpecGetter,
	eventCh chan<- types.EventData, doneCh chan struct{}, logger *logging.Logger) func(block chain.Block) error

func UTF8StringFromBytes

func UTF8StringFromBytes(bs []byte) (string, error)

Checks whether the bytes passed are valid utf8 string bytes. If they are not returns a sanitised string version of the bytes with offending sequences replaced by the utf8 replacement/error rune and an error indicating the offending byte sequences and their position. Note: always returns a valid string regardless of error.

Types

type AbiProvider added in v0.28.0

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

AbiProvider provides a method for loading ABIs from disk, and retrieving them from burrow on-demand

func NewAbiProvider added in v0.28.0

func NewAbiProvider(paths []string, chain chain.Chain, logger *logging.Logger) (provider *AbiProvider, err error)

NewAbiProvider loads ABIs from the filesystem. A set of zero or more files or directories can be passed in the path argument. If an event is encountered for which no ABI is known, it is retrieved from burrow

func (*AbiProvider) GetEventAbi added in v0.28.0

func (p *AbiProvider) GetEventAbi(eventID abi.EventID, address crypto.Address) (*abi.EventSpec, error)

GetEventAbi get the ABI for a particular eventID. If it is not known, it is retrieved from the burrow node via the address for the contract

type Consumer

type Consumer struct {
	Config *config.VentConfig
	Logger *logging.Logger
	DB     *sqldb.SQLDB
	Chain  chain.Chain
	// external events channel used for when vent is leveraged as a library
	EventsChannel chan types.EventData
	Done          chan struct{}

	LastProcessedHeight uint64
	// contains filtered or unexported fields
}

Consumer contains basic configuration for consumer to run

func NewConsumer

func NewConsumer(cfg *config.VentConfig, log *logging.Logger, eventChannel chan types.EventData) *Consumer

NewConsumer constructs a new consumer configuration. The event channel will be passed a collection of rows generated from all of the events in a single block It will be closed by the consumer when it is finished

func (*Consumer) Health

func (c *Consumer) Health() error

Health returns the health status for the consumer

func (*Consumer) Run

func (c *Consumer) Run(projection *sqlsol.Projection, stream bool) error

Run connects to a grpc service and subscribes to log events, then gets tables structures, maps them & parse event data. Store data in SQL event tables, it runs forever

func (*Consumer) Shutdown

func (c *Consumer) Shutdown()

Shutdown gracefully shuts down the events consumer

func (*Consumer) StatusMessage added in v0.31.0

func (c *Consumer) StatusMessage(ctx context.Context) []interface{}

type EventSpecGetter added in v0.28.0

type EventSpecGetter func(abi.EventID, crypto.Address) (*abi.EventSpec, error)

type Server

type Server struct {
	Config   *config.VentConfig
	Log      *logging.Logger
	Consumer *Consumer
	// contains filtered or unexported fields
}

Server exposes HTTP endpoints for the service

func NewServer

func NewServer(cfg *config.VentConfig, log *logging.Logger, consumer *Consumer) *Server

NewServer returns a new HTTP server

func (*Server) Run

func (s *Server) Run()

Run starts the HTTP server

func (*Server) ServeHTTP

func (s *Server) ServeHTTP(resp http.ResponseWriter, req *http.Request)

ServeHTTP dispatches the HTTP requests using the Server Mux

func (*Server) Shutdown

func (s *Server) Shutdown()

Shutdown gracefully shuts down the HTTP Server

Jump to

Keyboard shortcuts

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