mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-09-27 01:15:52 +08:00
refactor: InstallPlugin
This commit is contained in:
15
plugin.go
15
plugin.go
@@ -8,7 +8,6 @@ import (
|
||||
"reflect"
|
||||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/mcuadros/go-defaults"
|
||||
"gopkg.in/yaml.v3"
|
||||
@@ -76,18 +75,23 @@ func (plugin *PluginMeta) Init(s *Server, userConfig map[string]any) {
|
||||
go p.Start()
|
||||
}
|
||||
|
||||
type iPlugin interface {
|
||||
nothing()
|
||||
}
|
||||
|
||||
type IPlugin interface {
|
||||
OnInit()
|
||||
OnEvent(any)
|
||||
}
|
||||
|
||||
type ITCPPlugin interface {
|
||||
OnTCPConnect(*net.TCPConn)
|
||||
}
|
||||
|
||||
var plugins []PluginMeta
|
||||
|
||||
func InstallPlugin[C IPlugin](options ...any) error {
|
||||
var c C
|
||||
func InstallPlugin[C iPlugin](options ...any) error {
|
||||
var c *C
|
||||
t := reflect.TypeOf(c).Elem()
|
||||
meta := PluginMeta{
|
||||
Name: strings.TrimSuffix(t.Name(), "Plugin"),
|
||||
@@ -131,7 +135,10 @@ type Plugin struct {
|
||||
Publishers []*Publisher
|
||||
handler IPlugin
|
||||
server *Server
|
||||
sync.RWMutex
|
||||
}
|
||||
|
||||
func (Plugin) nothing() {
|
||||
|
||||
}
|
||||
|
||||
func (p *Plugin) GetCommonConf() *config.Common {
|
||||
|
@@ -65,4 +65,4 @@ func (p *DemoPlugin) OnPublish(publisher *m7s.Publisher) {
|
||||
}
|
||||
}
|
||||
|
||||
var _ = m7s.InstallPlugin[*DemoPlugin]()
|
||||
var _ = m7s.InstallPlugin[DemoPlugin]()
|
||||
|
@@ -19,7 +19,7 @@ func (p *RTMPPlugin) OnInit() {
|
||||
|
||||
}
|
||||
|
||||
var _ = m7s.InstallPlugin[*RTMPPlugin](m7s.DefaultYaml(`tcp:
|
||||
var _ = m7s.InstallPlugin[RTMPPlugin](m7s.DefaultYaml(`tcp:
|
||||
listenaddr: :1935`))
|
||||
|
||||
func (p *RTMPPlugin) OnTCPConnect(conn *net.TCPConn) {
|
||||
|
Reference in New Issue
Block a user