events

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 10, 2019 License: MIT Imports: 1 Imported by: 0

README

Events 简单事件模型

提供异步触发和处理事件的接口,用于代码解耦

##使用方法

1.定义事件类型

EventTypeUserLogin=events.Type("userlogin")

2.创建处理程序,监听事件

EventHandler=func(e *eventsEvent){
   group,ok:=e.Data.(string)
   if ok==false{
       group="unknown group"
   }
   logger.Log(" user "+e.Target+"@" +group+" login ")
}
//监听默认事件系统
eventes.On(EventTypeUserLogin,EventHandler)

3.在必要的地方触发事件

event:=EventTypeUserLogin.NewEvent().
    WithTarget(uid).
    WithData(usergroup)
//Emit方法是异步调用的
 //返回值为是否注册过相应的事件
handled:=eventes.Emit(event)

4.快速包装监听和触发事件的帮助函数

EmitUserLogin:=WrapEmit(EventTypeUserLogin)
OnUserLogn:=WrapOn(EventTypeUserLogin)

//监听事件
OnUserlogin(EventHandler)

//触发事件,参数为空则创建新事件
EmitUserLogin(nil)

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultEventService = New()

DefaultEventService default event service.

Functions

func Emit

func Emit(event *Event) bool

Emit emit event to default event service

func On

func On(t Type, hanlder Hanlder)

On register default service event handlter to given type.

func WrapEmit

func WrapEmit(t Type) func(*Event) bool

WrapEmit return a default service event emitter with given type

func WrapOn

func WrapOn(t Type) func(Hanlder)

WrapOn return a defalut service hanlder registeror of give event type

Types

type Event

type Event struct {
	Type   Type
	Target string
	Data   interface{}
}

Event event struct

func NewEvent

func NewEvent() *Event

NewEvent create new event.

func (*Event) WithData

func (e *Event) WithData(data interface{}) *Event

WithData set event data and return event

func (*Event) WithTarget

func (e *Event) WithTarget(target string) *Event

WithTarget set event target and return event

func (*Event) WithType

func (e *Event) WithType(t Type) *Event

WithType set event type and return event

type EventService

type EventService struct {
	Hanlders map[Type][]Hanlder
	// contains filtered or unexported fields
}

EventService event service which handle evetns

func New

func New() *EventService

New create New EventsService

func (*EventService) Emit

func (e *EventService) Emit(event *Event) bool

Emit emit event to event service

func (*EventService) NewEvent

func (e *EventService) NewEvent() *Event

NewEvent create new event

func (*EventService) On

func (e *EventService) On(t Type, hanlder Hanlder)

On register event handlter to given type.

type Hanlder

type Hanlder func(*Event)

Hanlder event handler

type Type

type Type string

Type event type

func (Type) NewEvent

func (t Type) NewEvent() *Event

NewEvent create event wth type.

Jump to

Keyboard shortcuts

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