Robust events for Go. It takes 0.1 seconds to send/receive 1 Million events.
Install
gogetgithub.com/codemodify/systemkit-events
API
On(event, handler, callOnce)
Subscribe
OnWithData(event, handler, callOnce)
Subscribe with payload
Off(event, handlerRef)
Unsubscribe
OffWithData(event, handlerRef)
Unsubscribe with payload
Emit(event)
Emit
EmitWithData(event, data)
Emit with payload
Usage: Subscribe + Notify
package main
import (
events "github.com/codemodify/systemkit-events"
)
funcmain() {
events.Events().On("PING", func() {
// FIMXE: will be called
})
events.Events().Emit("PING")
}
Usage: Subscribe (data) + Notify (data)
package main
import (
events "github.com/codemodify/systemkit-events"
)
funcmain() {
events.Events().OnWithData("PING", func(data []byte) {
// FIMXE: will be called
})
events.Events().EmitWithData("PING", []byte("PING-DATA"))
}
Usage: Subscribe (yes-no-data) + Notify (data)
package main
import (
events "github.com/codemodify/systemkit-events"
)
funcmain() {
events.Events().OnWithData("PING", func(data []byte) {
// FIMXE: will be called
})
events.Events().On("PING", func() {
// FIMXE: will be called
})
events.Events().EmitWithData("PING", []byte("PING-DATA"))
}
Usage: Subscribe (yes-no-data) + Notify
package main
import (
events "github.com/codemodify/systemkit-events"
)
funcmain() {
events.Events().OnWithData("PING", func(data []byte) {
// FIMXE: will be called, data will be nil
})
events.Events().On("PING", func() {
// FIMXE: will be called
})
events.Events().Emit("PING")
}
Usage: Subscribe Once + Notify
package main
import (
events "github.com/codemodify/systemkit-events"
)
funcmain() {
handler1CallOnce:=trueevents.Events().On("PING", func() {
// FIMXE: will be called ONCE
}, handler1CallOnce)
handler3CallOnce:=falseevents.Events().On("PING", func() {
// FIMXE: will be called UNTIL "events.Events().Off()" is called
}, handler3CallOnce)
events.Events().Emit("PING")
}