51 lines
1 KiB
Go
51 lines
1 KiB
Go
package core
|
|
|
|
import (
|
|
"context"
|
|
|
|
"dynatron.me/x/blasphem/pkg/auth"
|
|
"dynatron.me/x/blasphem/pkg/bus"
|
|
"dynatron.me/x/blasphem/pkg/components"
|
|
"dynatron.me/x/blasphem/pkg/config"
|
|
"dynatron.me/x/blasphem/pkg/storage"
|
|
|
|
"github.com/gorilla/websocket"
|
|
)
|
|
|
|
type Blas interface {
|
|
auth.Authenticator
|
|
bus.Bus
|
|
storage.Store
|
|
config.Configured
|
|
components.Componenter
|
|
|
|
WebSocketManager
|
|
|
|
Shutdowner
|
|
Versioner
|
|
}
|
|
|
|
type WebSocketManager interface {
|
|
// Register registers a websocket command.
|
|
// cmd is the first part, before first slash
|
|
// dataNew is a function to create a new message datatype
|
|
RegisterWSCommand(cmd string, hnd Handler, dataNew NewData)
|
|
WSCommandHandler(cmd string, splitCmd []string) (NewData, Handler, error)
|
|
}
|
|
|
|
type WebSocketSession interface {
|
|
WSConn() *websocket.Conn
|
|
Go() error
|
|
Blas() Blas
|
|
}
|
|
|
|
type Handler func(wss WebSocketSession, msgID int, cmd []string, msg interface{}) error
|
|
type NewData func(cmd []string) interface{}
|
|
|
|
type Shutdowner interface {
|
|
ShutdownBlas(context.Context) error
|
|
}
|
|
|
|
type Versioner interface {
|
|
Version() string
|
|
}
|