Skip to content

A simple Event Emitter implementation in Go, using Goroutines.

License

Notifications You must be signed in to change notification settings

attilabuti/eventemitter

Repository files navigation

Event Emitter

build status codecov Go Report Card Go Reference license

Simple Event Emitter for Go Programming Language 1.18+.

Installation

$ go get github.com/attilabuti/eventemitter/v2@latest

Usage

For more information, please see the Package Docs.

package main

import (
	"fmt"

	"github.com/attilabuti/eventemitter/v2"
)

func main() {
    // Creating an instance.
    emitter := eventemitter.New()

    // Event handler.
    event := func(name string) {
        fmt.Printf("Hello, %s!", name)
    }

    // Register an event listener.
    emitter.AddListener("test_event", event)

    // Emit event sync.
    emitter.EmitSync("test_event", "World")

    // Remove event listener.
    emitter.RemoveListener("test_event", event)
}

Examples

AddListener

func main() {
	emitter := eventemitter.New()

    event := func(name string) {
        fmt.Printf("Hello, %s!", name)
    }

    emitter.AddListener("event", event)
    emitter.AddListener("event", &event)
    emitter.AddListener("event", func(name string) {
        fmt.Printf("Hello, %s!", name)
    })
}

RemoveListener

func main() {
	emitter := eventemitter.New()

    event := func(name string) {
        fmt.Printf("Hello, %s!", name)
    }

    emitter.AddListener("event", event)
    emitter.AddListener("event", &event)

    emitter.RemoveListener("event", event)
    emitter.RemoveListener("event", &event)
}

Emit

func main() {
	var wg sync.WaitGroup
	wg.Add(1)

	emitter := eventemitter.New()

    emitter.AddListener("event", func(name string) {
        defer wg.Done()
        fmt.Printf("Hello, %s!", name)
    })

    emitter.Emit("event", "World")

    wg.Wait()
}

EmitSync

func main() {
	emitter := eventemitter.New()

    emitter.AddListener("event", func(name string) {
        fmt.Printf("Hello, %s!", name)
    })

    emitter.EmitSync("event", "World")
}

RemoveAllListeners

func main() {
	emitter := eventemitter.New()

    // Removes all listeners of the specified event.
    emitter.AddListener("event", func(){})
    emitter.AddListener("event", func(){})
    emitter.RemoveAllListeners("event")

    // Removes all listeners.
    emitter.AddListener("event1", func(){})
    emitter.AddListener("event2", func(){})
    emitter.RemoveAllListeners()
}

Issues

Submit the issues if you find any bug or have any suggestion.

Contribution

Fork the repo and submit pull requests.

License

This project is licensed under the MIT License.