The globalevents package provides a simple and efficient mechanism for working with global events in an application. It is based on the EventBus library and implements the Publisher-Subscriber pattern.
- Global access to the event bus through a singleton
- Thread-safe event bus initialization
- Simple API for event subscription and publishing
err := globalevents.Subscribe("eventName", funcHandler)
if err != nil {
// handle error
}err := globalevents.Unsubscribe("eventName", funcHandler)
if err != nil {
// handle error
}globalevents.Publish("eventName", arg1, arg2, ...)- Uses
sync.Oncefor thread-safe event bus initialization - Provides a single access point to the event bus through the
getBus()function - All event operations are performed through a single bus instance
package main
import (
"fmt"
"github.com/error-none/globalevents"
)
func main() {
// Subscribe to an event from anywhere in the project
globalevents.Subscribe("userCreated", func(userID string) {
fmt.Printf("User created: %s\n", userID)
})
// Publish an event from anywhere in the project
globalevents.Publish("userCreated", "123")
}Пакет globalevents предоставляет простой и эффективный механизм для работы с глобальными событиями в приложении. Он основан на библиотеке EventBus и реализует паттерн "Издатель-Подписчик" (Publisher-Subscriber).
- Глобальный доступ к шине событий через синглтон
- Потокобезопасная инициализация шины событий
- Простой API для подписки на события и их публикации
err := globalevents.Subscribe("eventName", funcHandler)
if err != nil {
// обработка ошибки
}err := globalevents.Unsubscribe("eventName", funcHandler)
if err != nil {
// обработка ошибки
}globalevents.Publish("eventName", arg1, arg2, ...)- Использует
sync.Onceдля потокобезопасной инициализации шины событий - Предоставляет единую точку доступа к шине событий через функцию
getBus() - Все операции с событиями выполняются через единый экземпляр шины
package main
import (
"fmt"
"github.com/error-none/globalevents"
)
func main() {
// Подписка на событие в любом месте проекта
globalevents.Subscribe("userCreated", func(userID string) {
fmt.Printf("Пользователь создан: %s\n", userID)
})
// Публикация события в любом месте проекта
globalevents.Publish("userCreated", "123")
}