Documentation
¶
Overview ¶
Package bell implements a simple event system (bell ringing and listening)
Several listeners can be added for each ringing (handlerFunc). Listeners are called in a separate goroutine through an established channel. When the bell rings, a message is sequentially transmitted to each listener.
If a channel is closed, the goroutine for that event is terminated.
Example for usage: Listen("event_name", func(message Message) { fmt.PrintLn(message) }) - add listener on bell by name "event_name" Ring("event_name", "some_data") - Ring on bell (call event "event_name")
Example ¶
package main import ( "fmt" "github.com/nuttech/bell" "sort" "time" ) type CustomStruct struct { name string param int32 } func main() { event := "event_name" event2 := "event_name_2" // add listener on event event_name bell.Listen(event, func(message bell.Message) { // we extend CustomStruct in message.Value customStruct := message.Value.(CustomStruct) fmt.Println(customStruct) }) // add listener on event event_name_2 bell.Listen(event2, func(message bell.Message) { }) // get event list list := bell.List() // only for test sort.Strings(list) fmt.Println(list) // remove listeners on event_name_2 bell.Remove(event2) // get event list again fmt.Println(bell.List()) // check if exists event_name_2 event in storage fmt.Println(bell.Has(event2)) // call event event_name _ = bell.Ring(event, CustomStruct{name: "testName", param: 12}) // ONLY FOR EXAMPLE // add sleep because the event handler does not have time // to be processed before the completion of the script execution time.Sleep(time.Millisecond * 50) }
Output: [event_name event_name_2] [event_name] false {testName 12}
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Listen ¶
Listen Subscribe on event where event - the event name, handlerFunc - handler function