feat: rename profiler to performance, typeless event emitter

This commit is contained in:
2025-12-29 01:15:14 -05:00
parent c2b397a9f6
commit a2ce5b6897
6 changed files with 80 additions and 80 deletions

View File

@@ -2,40 +2,40 @@ package emitter
import "git.maximhutz.com/max/lambda/pkg/set"
type Observer[T any] struct {
fn func(T)
type Observer struct {
fn func()
message string
emitter *Emitter[T]
emitter *Emitter
}
type Emitter[T any] struct {
listeners map[string]*set.Set[*Observer[T]]
type Emitter struct {
listeners map[string]*set.Set[*Observer]
}
func Ignore[T any](fn func()) func(T) {
return func(T) { fn() }
}
func (e *Emitter[T]) On(message string, fn func(T)) *Observer[T] {
observer := &Observer[T]{
func (e *Emitter) On(message string, fn func()) *Observer {
observer := &Observer{
fn: fn,
message: message,
emitter: e,
}
if e.listeners == nil {
e.listeners = map[string]*set.Set[*Observer[T]]{}
e.listeners = map[string]*set.Set[*Observer]{}
}
if e.listeners[message] == nil {
e.listeners[message] = set.New[*Observer[T]]()
e.listeners[message] = set.New[*Observer]()
}
e.listeners[message].Add(observer)
return observer
}
func (o *Observer[T]) Off() {
func (o *Observer) Off() {
if o.emitter.listeners[o.message] == nil {
return
}
@@ -43,12 +43,12 @@ func (o *Observer[T]) Off() {
o.emitter.listeners[o.message].Remove(o)
}
func (e *Emitter[T]) Emit(message string, value T) {
func (e *Emitter) Emit(message string) {
if e.listeners[message] == nil {
return
}
for listener := range *e.listeners[message] {
listener.fn(value)
listener.fn()
}
}