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 { Conn() *websocket.Conn Go(context.Context) error Blas() Blas } type Handler func(ctx context.Context, 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 }