Major updates/patches, functionality, api
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
54
events/events.go
Normal file
54
events/events.go
Normal file
@ -0,0 +1,54 @@
|
||||
package events
|
||||
|
||||
import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
type eventHandler func(args ...interface{})
|
||||
|
||||
var (
|
||||
eventMap = make(map[string][]eventHandler)
|
||||
eventMapLock sync.RWMutex
|
||||
|
||||
allListeners = make([]eventHandler, 0)
|
||||
|
||||
initialized = false
|
||||
)
|
||||
|
||||
func On(name string, f eventHandler) {
|
||||
eventMapLock.Lock()
|
||||
defer eventMapLock.Unlock()
|
||||
|
||||
handlers, exists := eventMap[name]
|
||||
|
||||
if !exists {
|
||||
handlers = make([]eventHandler, 0)
|
||||
}
|
||||
|
||||
handlers = append(handlers, f)
|
||||
|
||||
eventMap[name] = handlers
|
||||
}
|
||||
|
||||
func OnALl(f eventHandler) {
|
||||
allListeners = append(allListeners, f)
|
||||
}
|
||||
|
||||
func Call(name string, args ...interface{}) {
|
||||
if !initialized && name != Init {
|
||||
Call(Init)
|
||||
initialized = true
|
||||
}
|
||||
|
||||
eventMapLock.RLock()
|
||||
handlers, exists := eventMap[name]
|
||||
eventMapLock.RUnlock()
|
||||
|
||||
if !exists {
|
||||
return
|
||||
}
|
||||
|
||||
for _, handler := range handlers {
|
||||
handler(args...)
|
||||
}
|
||||
}
|
29
events/names.go
Normal file
29
events/names.go
Normal file
@ -0,0 +1,29 @@
|
||||
package events
|
||||
|
||||
const (
|
||||
Init = "init"
|
||||
|
||||
ServerStarted = "server_started"
|
||||
ServerClosing = "server_closing"
|
||||
|
||||
// LoggedIn, Args: User, Address, X, Y, Z
|
||||
LoggedIn = "logged_in"
|
||||
|
||||
// Authenticated, Args: User, UUID
|
||||
Authenticated = "authenticated"
|
||||
|
||||
// Join, Args: User
|
||||
Join = "join"
|
||||
|
||||
// Leave, Args: User
|
||||
Leave = "leave"
|
||||
|
||||
// Op, Args: User, Source?
|
||||
Op = "op"
|
||||
|
||||
// Deop, Args: User, Source?
|
||||
Deop = "deop"
|
||||
|
||||
// Message, Args: User, Message
|
||||
Message = "message"
|
||||
)
|
Reference in New Issue
Block a user