event

package module
v0.0.0-...-0907f94 Latest Latest
Warning

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

Go to latest
Published: Sep 27, 2023 License: MIT Imports: 3 Imported by: 0

README

go-event

Go Report Card GoDoc

Go-event is a simple event system.

Get the package

$ go get -u github.com/vernellparker/g-events

Examples

e := event.New()
e.On("my.event.name.1", func() error {
    fmt.Println("Fire event")
    return nil
})

e.On("my.event.name.2", func(text string) error {
    fmt.Println("Fire", text)
    return nil
})

e.On("my.event.name.3", func(i, j int) error {
    fmt.Println("Fire", i+j)
    return nil
})

e.On("my.event.name.4", func(name string, params ...string) error {
    fmt.Println(name, params)
    return nil
})

e.Go("my.event.name.1") // Print: Fire event
e.Go("my.event.name.2", "some event") // Print: Fire some event
e.Go("my.event.name.3", 1, 2) // Print: Fire 3
e.Go("my.event.name.4", "params:", "a", "b", "c") // Print: params: [a b c]

A couple more examples

package main

import (
    "fmt"

    "github.com/AlexanderGrom/go-event"
)

func EventFunc(text string) error {
    fmt.Println("Fire:", text, "1")
    return nil
}

type EventStruct struct{}

func (e *EventStruct) EventFunc(text string) error {
    fmt.Println("Fire:", text, "2")
    return nil
}

func main() {
    event.On("my.event.name.1", EventFunc)
    event.On("my.event.name.1", (&EventStruct{}).EventFunc)

    event.Go("my.event.name.1", "event")
    // Print: Fire event 1
    // Print: Fire event 2
}
A more complex example
package main

import (
    "fmt"

    "github.com/AlexanderGrom/go-event"
)

type (
    Listener interface {
        Name() string
        Handle(e event.Eventer) error
    }
)

// ...

type (
    fooEvent struct {
        event.Event

        i, j int
    }

    fooListener struct {
        name string
    }
)

func NewFooEvent(i, j int) event.Eventer {
    return &fooEvent{i:i, j:j}
}

func NewFooListener() Listener {
    return &fooListener{
        name: "my.foo.event",
    }
}

func (l *fooListener) Name() string {
    return l.name
}

func (l *fooListener) Handle(e event.Eventer) error {
    ev := e.(*fooEvent)
    ev.StopPropagation()

    fmt.Println("Fire", ev.i+ev.j)
    return nil
}

// ...

func main() {
    e := event.New()

    // Collection
    collect := []Listener{
        NewFooListener(),
        // ...
    }

    // ...

    // Registration
    for _, l := range collect {
        e.On(l.Name(), l.Handle)
    }

    // ...

    // Call
    e.Go("my.foo.event", NewFooEvent(1, 2))
    // Print: Fire 3
}

Documentation

Overview

Package event is a simple event system.

Package event is a simple event system.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Go

func Go(name string, params ...interface{}) error

Go firing an event from the default source.

func Has

func Has(name string) bool

Has returns true if a event exists from the default source.

func List

func List() []string

List returns list events from the default source.

func On

func On(name string, fn interface{}) error

On set new listener from the default source.

func Remove

func Remove(names ...string)

Remove delete events from the event list from the default source.

Types

type Dispatcher

type Dispatcher interface {
	On(name string, fn interface{}) error
	Go(name string, params ...interface{}) error
	Has(name string) bool
	List() []string
	Remove(names ...string)
}

Dispatcher event interface

func New

func New() Dispatcher

New returns a new event.Dispatcher

type Event

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

Event is the base class for classes containing event data

func (*Event) IsPropagationStopped

func (e *Event) IsPropagationStopped() bool

IsPropagationStopped returns whether further event listeners should be triggered

func (*Event) StopPropagation

func (e *Event) StopPropagation()

StopPropagation Stops the propagation of the event to further event listeners

type Eventer

type Eventer interface {
	StopPropagation()
	IsPropagationStopped() bool
}

Eventer interface

Jump to

Keyboard shortcuts

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