events

package
v0.2.1-beta.1 Latest Latest
Warning

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

Go to latest
Published: Sep 13, 2021 License: MIT Imports: 14 Imported by: 3

Documentation

Overview

Package events defines events published by go-spacemsh node using nodes pubsub

Index

Constants

View Source
const (
	LayerStatusTypeUnknown   = iota
	LayerStatusTypeApproved  // approved by Hare
	LayerStatusTypeConfirmed // confirmed by Tortoise
)

The status of a layer TODO: this list is woefully inadequate and does not map to reality. See https://github.com/spacemeshos/api/issues/144.

Variables

This section is empty.

Functions

func CloseEventPubSub added in v0.1.16

func CloseEventPubSub()

CloseEventPubSub closes events pubsub and destroys it

func CloseEventReporter added in v0.1.15

func CloseEventReporter()

CloseEventReporter shuts down the event reporting service and closes open channels

func EventHook added in v1.0.0

func EventHook() func(entry zapcore.Entry) error

EventHook returns hook for logger.

func GetAccountChannel added in v0.1.15

func GetAccountChannel() chan types.Address

GetAccountChannel returns a channel for account data updates

func GetActivationsChannel added in v0.1.15

func GetActivationsChannel() chan *types.ActivationTx

GetActivationsChannel returns a channel of activations

func GetErrorChannel added in v0.1.15

func GetErrorChannel() chan NodeError

GetErrorChannel returns a channel for node errors

func GetLayerChannel added in v0.1.15

func GetLayerChannel() chan LayerUpdate

GetLayerChannel returns a channel of all layer data

func GetNewTxChannel added in v0.1.15

func GetNewTxChannel() chan TransactionWithValidity

GetNewTxChannel returns a channel of new transactions

func GetReceiptChannel added in v0.1.15

func GetReceiptChannel() chan TxReceipt

GetReceiptChannel returns a channel for tx receipts

func GetRewardChannel added in v0.1.15

func GetRewardChannel() chan Reward

GetRewardChannel returns a channel for rewards

func GetStatusChannel added in v0.1.15

func GetStatusChannel() chan struct{}

GetStatusChannel returns a channel for node status messages

func InitializeEventPubsub

func InitializeEventPubsub(ur string) error

InitializeEventPubsub initializes the global pubsub broadcaster server

func InitializeEventReporter added in v0.1.15

func InitializeEventReporter(url string) error

InitializeEventReporter initializes the event reporting interface

func InitializeEventReporterWithOptions added in v0.1.15

func InitializeEventReporterWithOptions(url string, bufsize int, blocking bool) error

InitializeEventReporterWithOptions initializes the event reporting interface with a nonzero channel buffer. This is useful for testing, where we want reporting to block.

func Publish

func Publish(event Event)

Publish publishes an event on the pubsub singleton.

func ReportAccountUpdate added in v0.1.15

func ReportAccountUpdate(a types.Address)

ReportAccountUpdate reports an account whose data has been updated

func ReportAtxCreated added in v0.1.15

func ReportAtxCreated(created bool, epoch uint32, id string)

ReportAtxCreated reports a created activation

func ReportCalculatedTortoiseBeacon

func ReportCalculatedTortoiseBeacon(epoch types.EpochID, beacon string)

ReportCalculatedTortoiseBeacon reports calculated tortoise beacon.

func ReportDoneCreatingBlock added in v0.1.15

func ReportDoneCreatingBlock(eligible bool, layer uint32, error string)

ReportDoneCreatingBlock reports a created block

func ReportError added in v0.1.15

func ReportError(err NodeError)

ReportError reports an error

func ReportLayerUpdate added in v1.0.0

func ReportLayerUpdate(layer LayerUpdate)

ReportLayerUpdate reports a new layer, or an update to an existing layer

func ReportNewActivation added in v0.1.15

func ReportNewActivation(activation *types.ActivationTx)

ReportNewActivation reports a new activation

func ReportNewBlock added in v0.1.15

func ReportNewBlock(blk *types.Block)

ReportNewBlock reports a new block

func ReportNewTx added in v0.1.15

func ReportNewTx(tx *types.Transaction)

ReportNewTx dispatches incoming events to the reporter singleton

func ReportNodeStatusUpdate added in v0.1.15

func ReportNodeStatusUpdate()

ReportNodeStatusUpdate reports an update to the node status. It just pings the listener to notify them that there is an update; the listener is responsible for fetching the new status details. This is because status contains disparate information coming from different services, and the listener already knows how to gather that information so there is no point in duplicating that logic here. Note: There is some overlap with channelLayer here, as a new latest or verified layer should be sent over that channel as well. However, that happens inside the Mesh, at the source. It doesn't currently happen here because the status update includes only a layer ID, not full layer data, and the Reporter currently has no way to retrieve full layer data.

func ReportReceipt added in v0.1.15

func ReportReceipt(r TxReceipt)

ReportReceipt reports creation or receipt of a new tx receipt

func ReportRewardReceived added in v0.1.15

func ReportRewardReceived(r Reward)

ReportRewardReceived reports a new reward

func ReportTxWithValidity added in v0.1.15

func ReportTxWithValidity(tx *types.Transaction, valid bool)

ReportTxWithValidity reports a tx along with whether it was just invalidated

func ReportValidActivation added in v0.1.15

func ReportValidActivation(activation *types.ActivationTx, valid bool)

ReportValidActivation reports a valid activation

func ReportValidBlock added in v0.1.15

func ReportValidBlock(blockID types.BlockID, valid bool)

ReportValidBlock reports a block's validity

func ReportValidTx added in v0.1.15

func ReportValidTx(tx *types.Transaction, valid bool)

ReportValidTx reports a valid transaction

func SubscribeToLayers added in v0.1.15

func SubscribeToLayers(newLayerCh timesync.LayerTimer)

SubscribeToLayers is used to track and report automatically every time a new layer is reached.

Types

type AtxCreated

type AtxCreated struct {
	Created bool
	ID      string
	Epoch   uint32
}

AtxCreated signals this miner has created an activation transaction

func (AtxCreated) GetChannel

func (AtxCreated) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

type ChannelID added in v0.1.11

type ChannelID byte

ChannelID is the ID on which subscribers must register in order to listen to messages on the channel.

const (
	EventNewBlock ChannelID = 1 + iota
	EventBlockValid
	EventNewAtx
	EventAtxValid
	EventNewTx
	EventTxValid
	EventRewardReceived
	EventCreatedBlock
	EventCreatedAtx
	EventCalculatedTortoiseBeacon
)

These consts are used as prefixes for different messages in pubsub

type DoneCreatingBlock

type DoneCreatingBlock struct {
	Eligible bool
	Layer    uint32
	Error    string
}

DoneCreatingBlock signals that this miner has created a block

func (DoneCreatingBlock) GetChannel

func (DoneCreatingBlock) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

type Event

type Event interface {
	// GetChannel returns the channel on which this message will be published.
	GetChannel() ChannelID
}

Event defines the interface that each message sent by the EventPublisher needs to implemet for it to correctly be routed by topic.

type EventPublisher

type EventPublisher struct {
	*Publisher
}

EventPublisher is the struct that publishes events to subscribers by topics.

func NewEventPublisher

func NewEventPublisher(eventURL string) (*EventPublisher, error)

NewEventPublisher is a constructor for the event publisher, it received a url string in format of tcp://localhost:56565 to start listening for connections.

func (*EventPublisher) Close

func (p *EventPublisher) Close() error

Close closes the published internal socket

func (*EventPublisher) PublishEvent

func (p *EventPublisher) PublishEvent(event Event) error

PublishEvent publishes the provided event on pubsub infra.

type EventReporter added in v0.1.15

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

EventReporter is the struct that receives incoming events and dispatches them

type LayerUpdate added in v1.0.0

type LayerUpdate struct {
	LayerID types.LayerID
	Status  int
}

LayerUpdate packages up a layer with its status (which a layer does not ordinarily contain)

func (LayerUpdate) Field added in v1.0.0

func (nl LayerUpdate) Field() log.Field

Field returns a log field. Implements the LoggableField interface.

type NewAtx

type NewAtx struct {
	ID      string
	EpochID uint32
}

NewAtx signals that a new ATX has been received

func (NewAtx) GetChannel

func (NewAtx) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

type NewBlock

type NewBlock struct {
	ID    string
	Layer uint32
	Atx   string
}

NewBlock is sent when a new block is created by this miner

func (NewBlock) GetChannel

func (NewBlock) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

type NewTx

type NewTx struct {
	ID          string
	Origin      string
	Destination string
	Amount      uint64
	Fee         uint64
}

NewTx signals that a new transaction has been received and not yet validated

func (NewTx) GetChannel

func (NewTx) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

type NodeError added in v0.1.15

type NodeError struct {
	Msg   string
	Trace string
	Level zapcore.Level
}

NodeError represents an internal error to be reported

type Publisher

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

Publisher is a wrapper for mangos pubsub publisher socket

func (*Publisher) Close added in v0.1.16

func (p *Publisher) Close()

Close closes the publishers output socket

type Reward added in v0.1.15

type Reward struct {
	Layer       types.LayerID
	Total       uint64
	LayerReward uint64
	Coinbase    types.Address
	// TODO: We don't currently have a way to get the Layer Computed.
	// See https://github.com/spacemeshos/go-spacemesh/issues/2275
	//LayerComputed
	Smesher types.NodeID
}

Reward represents a reward object with extra data needed by the API

type RewardReceived

type RewardReceived struct {
	Coinbase  string
	Amount    uint64
	SmesherID []byte
}

RewardReceived signals reward has been received

func (RewardReceived) GetChannel

func (RewardReceived) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

type Subscriber

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

Subscriber defines the struct of the receiving end of the pubsub messages.

func NewSubscriber

func NewSubscriber(url string) (*Subscriber, error)

NewSubscriber received url string as input on which it will register to receive messages passed by server.

func (*Subscriber) Close

func (sub *Subscriber) Close() error

Close closes the socket which in turn will Close the listener func

func (*Subscriber) StartListening

func (sub *Subscriber) StartListening()

StartListening runs in a go routine and listens to all channels this subscriber is registered to. it then passes the messages received to the appropriate reader channel.

func (*Subscriber) Subscribe

func (sub *Subscriber) Subscribe(topic ChannelID) (chan []byte, error)

Subscribe subscribes to the given topic, returns a channel on which data from the topic is received.

func (*Subscriber) SubscribeToAll

func (sub *Subscriber) SubscribeToAll() (chan []byte, error)

SubscribeToAll subscribes to all available topics.

type TortoiseBeaconCalculated

type TortoiseBeaconCalculated struct {
	Epoch  types.EpochID
	Beacon string
}

TortoiseBeaconCalculated signals this miner has calculated a tortoise beacon.

func (TortoiseBeaconCalculated) GetChannel

func (TortoiseBeaconCalculated) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

type TransactionWithValidity added in v0.1.15

type TransactionWithValidity struct {
	Transaction *types.Transaction
	Valid       bool
}

TransactionWithValidity wraps a tx with its validity info

type TxReceipt added in v0.1.15

type TxReceipt struct {
	ID      types.TransactionID
	Result  int
	GasUsed uint64
	Fee     uint64
	Layer   types.LayerID
	Index   uint32
	Address types.Address
}

TxReceipt represents a transaction receipt

type ValidAtx

type ValidAtx struct {
	ID    string
	Valid bool
}

ValidAtx signals that an activation transaction with id ID has been validated

func (ValidAtx) GetChannel

func (ValidAtx) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

type ValidBlock

type ValidBlock struct {
	ID    string
	Valid bool
}

ValidBlock signals that block with id ID has been validated

func (ValidBlock) GetChannel

func (ValidBlock) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

type ValidTx

type ValidTx struct {
	ID    string
	Valid bool
}

ValidTx signals that the transaction with id ID has been validated

func (ValidTx) GetChannel

func (ValidTx) GetChannel() ChannelID

GetChannel gets the message type which means on which this message should be sent

Jump to

Keyboard shortcuts

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