Categorygithub.com/Nigel2392/go-signals
modulepackage
1.0.8
Repository: https://github.com/nigel2392/go-signals.git
Documentation: pkg.go.dev

# README

Go-Signals

A simple package for easily sending signals application-wide. Signals are a way to communicate between different parts of your application.

Installation

go get github.com/Nigel2392/go-signals

Synchronously sending signals

// Create a new signal in the global pool,
// Signals from the global pool are of type interface{}.
// if it was already created, we will fetch the old one
// from the pool.
var signal = signals.Get("mysignal")

var messages = make([]string, 0)

// Initialize a receiver
var receiver = signals.NewRecv(func(signal signals.Signal[any], value ...any) error {
	t.Logf("Received %v from %s", value, signal.Name())
	messages = append(messages, value[0].(string))
	return nil
})

// Connect a receiver to a signal
signal.Connect(receiver)

// Send a signal
var err = signal.Send("This is a signal message!")
if err != nil {
	t.Errorf("Expected no errors, got %s", err.Error())
}

// Disconnect a receiver from a signal.
signal.Disconnect(receiver)

Asynchronously sending signals

var signal = signals.Get("mysignal")
var errChan = signal.SendAsync("This is a signal message!")
for err := range errChan {
	if err != nil {
		fmt.Printf("Received error: %s\n", err.Error())
	}
}

Create a new signal pool

// Create a new signal pool of type string
var newSignalPool = signals.NewPool[string]()

# Functions

Get a signal by name.
Register a receiver to a signal.
Create a new signal.
Return a new pool of signals.
Initialize a new receiver.
This will send the signal to all receivers that are connected to the signal.
No description provided by the author

# Structs

Error type for signals.
Pool of signals.

# Interfaces

Receiver interface This will be registered to any signals that it wants to receive.
Signal interface.