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() }