service

package
v0.0.0-...-2935fa7 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2021 License: Apache-2.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewBlockConsumer

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

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

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

func NewAbiProvider

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 hsc

func (*AbiProvider) GetEventAbi

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 hsc 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

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

type EventSpecGetter

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