uplink/app/server.go

44 lines
870 B
Go

package app
import (
"log"
"git.icedream.tech/icedream/uplink/app/channels"
"git.icedream.tech/icedream/uplink/app/servers/http"
"git.icedream.tech/icedream/uplink/plugins"
)
type App struct {
Server *httpserver.Server
ChannelManager *channels.ChannelManager
plugins []plugins.PluginInstance
}
func New() *App {
return &App{
Server: httpserver.NewServer(),
ChannelManager: channels.NewChannelManager(),
plugins: []plugins.PluginInstance{},
}
}
func (app *App) UsePlugin(plugin *plugins.Plugin) {
instance := plugin.Run()
app.plugins = append(app.plugins, instance)
log.Println("Plugin loaded:", plugin.Descriptor.Name)
}
func (app *App) Init() {
for _, plugin := range app.plugins {
if p, ok := plugin.(plugins.ServerPlugin); ok {
p.SetServer(app.Server)
}
}
}
func (app *App) Run() error {
return app.Server.Run()
}