localevent

package
v0.0.0-...-a275ad2 Latest Latest
Warning

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

Go to latest
Published: Nov 13, 2022 License: LGPL-2.1 Imports: 3 Imported by: 0

Documentation

Overview

Package localevent 高效的本地事件系统,只适用于单线程环境。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func UnbindEvent

func UnbindEvent(event IEvent, delegate any)

UnbindEvent 解绑定事件与订阅者,比使用事件绑定句柄解绑定性能差,且在同个订阅者多次绑定事件的情况下,只能从最后依次解除,无法指定解除哪一个

func UnsafeEvent

func UnsafeEvent(v IEvent) _UnsafeEvent

Types

type Event

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

Event 本地事件,非线程安全,不能用于跨线程事件通知

func (*Event) Clean

func (event *Event) Clean()

Clean 清除全部订阅者

func (*Event) Close

func (event *Event) Close()

Close 关闭事件

func (*Event) Init

func (event *Event) Init(autoRecover bool, reportError chan error, eventRecursion EventRecursion, hookCache *container.Cache[Hook], gcCollector container.GCCollector)

Init 初始化事件

func (*Event) Open

func (event *Event) Open()

Open 打开事件

type EventRecursion

type EventRecursion int32

EventRecursion 发生事件递归的处理方式,事件递归是指在一个事件的订阅者中再次发送这个事件

const (
	EventRecursion_Allow    EventRecursion = iota // 允许事件递归,但是可能会造成无限递归
	EventRecursion_Disallow                       // 不允许事件递归,发生时会panic
	EventRecursion_NotEmit                        // 不再发送事件,如果在订阅者中再次发送这个事件,那么不会再发送给任何订阅者
	EventRecursion_Discard                        // 丢弃递归的事件,如果在订阅者中再次发送这个事件,那么不会再次进入这个订阅者,但是会进入其他订阅者
	EventRecursion_Deepest                        // 深度优先处理递归事件,如果在订阅者中再次发送这个事件,那么会中断上次事件发送过程,并在本次事件发送过程中,不会再次进入这个订阅者
)

type Hook

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

Hook 事件绑定句柄,主要用于重新绑定或解除绑定事件,由BindEvent()或BindEventWithPriority()创建并返回,请勿自己创建

func BindEvent

func BindEvent[T any](event IEvent, delegate T) Hook

BindEvent 绑定事件与订阅者

func BindEventWithPriority

func BindEventWithPriority[T any](event IEvent, delegate T, priority int32) Hook

BindEventWithPriority 绑定事件与订阅者,可以设置优先级调整回调先后顺序,按优先级升序排列

func (*Hook) Bind

func (hook *Hook) Bind(event IEvent)

Bind 重新绑定事件与订阅者

func (*Hook) BindWithPriority

func (hook *Hook) BindWithPriority(event IEvent, priority int32)

BindWithPriority 重新绑定事件与订阅者,可以设置优先级调整回调先后顺序,按优先级升序排列

func (*Hook) IsBound

func (hook *Hook) IsBound() bool

IsBound 是否已绑定事件

func (*Hook) Unbind

func (hook *Hook) Unbind()

Unbind 解绑定事件与订阅者

type IEvent

type IEvent interface {
	// contains filtered or unexported methods
}

IEvent 本地事件接口,非线程安全,不能用于跨线程事件通知

type IEventTab

type IEventTab interface {
	// Init 初始化事件表
	Init(autoRecover bool, reportError chan error, hookCache *container.Cache[Hook], gcCollector container.GCCollector)
	// Get 获取事件
	Get(id int) IEvent
	// Open 打开事件表中所有事件
	Open()
	// Close 关闭事件表中所有事件
	Close()
	// Clean 事件表中的所有事件清除全部订阅者
	Clean()
}

IEventTab 本地事件表接口,我们可以把一些事件定义在同一个源码文件中,使用事件代码生成器的生成事件表功能,自动生成事件表

Directories

Path Synopsis
Package eventcode 本地事件辅助代码生成器,使用Golang的代码生成功能(go generate)生成本地事件相关辅助代码。
Package eventcode 本地事件辅助代码生成器,使用Golang的代码生成功能(go generate)生成本地事件相关辅助代码。

Jump to

Keyboard shortcuts

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