event

package
v0.0.0-...-de85661 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2022 License: Unlicense Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrMuxClosed = errors.New("event: mux closed")

在关闭的TypeMux上发布时返回ErrMuxClosed。

Functions

This section is empty.

Types

type ChainEvent

type ChainEvent struct {
	Block *block2.Block
	Hash  entity.Hash
	Logs  []*log.Logger
}

type ChainHeadEvent

type ChainHeadEvent struct{ Block *block2.Block }

type ChainSideEvent

type ChainSideEvent struct {
	Block *block2.Block
}

type Feed

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

Feed实现了一对多订阅,其中事件的载体是一个频道

func (*Feed) Send

func (f *Feed) Send(value interface{}) (nsent int)

发送同时发送到所有订阅的频道。它返回向其发送值的订户数。

func (*Feed) Subscribe

func (f *Feed) Subscribe(channel interface{}) Subscription

Subscribe向提要添加频道。在取消订阅之前,将来的发送将在通道上传递。添加的所有通道必须具有相同的元素类型。 通道应具有足够的缓冲空间,以避免阻塞其他订阅者。慢速订阅服务器不会被丢弃

type NewMinedBlockEvent

type NewMinedBlockEvent struct{ Block *block2.Block }

导入块后,将发布NewMinedBlockEvent。

type NewTxsEvent

type NewTxsEvent struct{ Txs []*block2.Transaction }

当一批事务进入事务池时,会过帐NewTxsEvent。

type RemovedLogsEvent

type RemovedLogsEvent struct{ Logs []*block2.Log }

RemovedLogseEvent在发生reorg时发布

type Subscription

type Subscription interface {
	Err() <-chan error //返回错误通道
	Unsubscribe()      //取消发送事件,关闭错误通道
}

订阅表示事件流。事件的载体通常是一个通道,但不是接口的一部分。 订阅在建立时可能会失败。通过错误通道报告故障。如果订阅存在问题(例如,传递事件的网络连接已关闭),它将收到一个值。将只发送一个值。 订阅成功结束时(即事件源关闭时),错误通道关闭。当调用Unsubscribe时,它也会关闭。 Unsubscribe方法取消发送事件。在任何情况下,您都必须调用Unsubscribe,以确保释放与订阅相关的资源。它可以被调用任意次数。

func NewSubscription

func NewSubscription(producer func(<-chan struct{}) error) Subscription

NewSubscription在新的goroutine中运行生产者函数作为订阅。 当调用Unsubscribe时,提供给制作人的频道关闭。如果fn返回错误,则会在订阅的错误通道上发送。

type SubscriptionScope

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

SubscriptionScope提供了一种功能,可以一次取消订阅多个订阅。 对于处理多个订阅的代码,可以使用一个作用域通过单个调用方便地取消所有订阅。该示例演示了在大型程序中的典型用法。 零值已准备好使用。

func (*SubscriptionScope) Close

func (sc *SubscriptionScope) Close()

Close calls取消对所有跟踪订阅的订阅,并阻止进一步添加到跟踪集。关闭后跟踪的调用返回nil。

func (*SubscriptionScope) Count

func (sc *SubscriptionScope) Count() int

Count返回跟踪的订阅数。它用于调试。

func (*SubscriptionScope) Track

Track开始跟踪订阅。如果作用域已关闭,Track将返回nil。返回的订阅是包装。取消订阅包装将其从范围中删除。

type TypeMux

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

TypeMux将事件发送给注册的接收器。 可以注册接收器来处理特定类型的事件。 停止多路复用器后调用的任何操作都将返回ErrMuxClosed。 零值已准备好使用。不推荐:使用提要

func (*TypeMux) Post

func (mux *TypeMux) Post(ev interface{}) error

Post向为给定类型注册的所有接收器发送事件。如果多路复用器已停止,则返回ErrMuxClosed。

func (*TypeMux) Subscribe

func (mux *TypeMux) Subscribe(types ...interface{}) *TypeMuxSubscription

Subscribe为给定类型的事件创建订阅。订阅的频道在取消订阅或多路复用器关闭时关闭。

type TypeMuxEvent

type TypeMuxEvent struct {
	Time time.Time
	Data interface{}
}

TypeMuxEvent是推送到订阅者的带有时间标签的通知。

type TypeMuxSubscription

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

TypeMux订阅是通过TypeMux建立的订阅。

func (*TypeMuxSubscription) Chan

func (s *TypeMuxSubscription) Chan() <-chan *TypeMuxEvent

func (*TypeMuxSubscription) Unsubscribe

func (s *TypeMuxSubscription) Unsubscribe()

Jump to

Keyboard shortcuts

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