mirror of
https://github.com/Kong/go-pluginserver.git
synced 2025-09-27 12:32:10 +08:00
refactor(*) reorder according to lifespan
This commit is contained in:

committed by
Guilherme Salazar

parent
8777138bdd
commit
db0d11e5ae
@@ -48,47 +48,6 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- pluginData --- //
|
|
||||||
type pluginData struct {
|
|
||||||
name string
|
|
||||||
code *plugin.Plugin
|
|
||||||
constructor func() interface{}
|
|
||||||
config interface{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- instanceData --- //
|
|
||||||
type instanceData struct {
|
|
||||||
id int
|
|
||||||
plugin *pluginData
|
|
||||||
initialized bool
|
|
||||||
config interface{}
|
|
||||||
handlers map[string]func(kong *pdk.PDK)
|
|
||||||
}
|
|
||||||
|
|
||||||
type (
|
|
||||||
certificater interface{ Certificate(*pdk.PDK) }
|
|
||||||
rewriter interface{ Rewrite(*pdk.PDK) }
|
|
||||||
accesser interface{ Access(*pdk.PDK) }
|
|
||||||
headerFilter interface{ HeaderFilter(*pdk.PDK) }
|
|
||||||
bodyFilter interface{ BodyFilter(*pdk.PDK) }
|
|
||||||
prereader interface{ Preread(*pdk.PDK) }
|
|
||||||
logger interface{ Log(*pdk.PDK) }
|
|
||||||
)
|
|
||||||
|
|
||||||
func getHandlers(config interface{}) map[string]func(kong *pdk.PDK) {
|
|
||||||
handlers := map[string]func(kong *pdk.PDK){}
|
|
||||||
|
|
||||||
if h, ok := config.(certificater); ok { handlers["certificate"] = h.Certificate }
|
|
||||||
if h, ok := config.(rewriter) ; ok { handlers["rewrite"] = h.Rewrite }
|
|
||||||
if h, ok := config.(accesser) ; ok { handlers["access"] = h.Access }
|
|
||||||
if h, ok := config.(headerFilter); ok { handlers["header_filter"] = h.HeaderFilter }
|
|
||||||
if h, ok := config.(bodyFilter) ; ok { handlers["body_filter"] = h.BodyFilter }
|
|
||||||
if h, ok := config.(prereader) ; ok { handlers["preread"] = h.Preread }
|
|
||||||
if h, ok := config.(logger) ; ok { handlers["log"] = h.Log }
|
|
||||||
|
|
||||||
return handlers
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- PluginServer --- //
|
// --- PluginServer --- //
|
||||||
type PluginServer struct {
|
type PluginServer struct {
|
||||||
lock sync.RWMutex
|
lock sync.RWMutex
|
||||||
@@ -117,6 +76,14 @@ func (s *PluginServer) SetPluginDir(dir string, reply *string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- pluginData --- //
|
||||||
|
type pluginData struct {
|
||||||
|
name string
|
||||||
|
code *plugin.Plugin
|
||||||
|
constructor func() interface{}
|
||||||
|
config interface{}
|
||||||
|
}
|
||||||
|
|
||||||
func (s PluginServer) loadPlugin(name string) (plug *pluginData, err error) {
|
func (s PluginServer) loadPlugin(name string) (plug *pluginData, err error) {
|
||||||
s.lock.RLock()
|
s.lock.RLock()
|
||||||
plug, ok := s.plugins[name]
|
plug, ok := s.plugins[name]
|
||||||
@@ -263,6 +230,39 @@ func (s PluginServer) GetPluginInfo(name string, info *PluginInfo) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- instanceData --- //
|
||||||
|
type instanceData struct {
|
||||||
|
id int
|
||||||
|
plugin *pluginData
|
||||||
|
initialized bool
|
||||||
|
config interface{}
|
||||||
|
handlers map[string]func(kong *pdk.PDK)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
certificater interface{ Certificate(*pdk.PDK) }
|
||||||
|
rewriter interface{ Rewrite(*pdk.PDK) }
|
||||||
|
accesser interface{ Access(*pdk.PDK) }
|
||||||
|
headerFilter interface{ HeaderFilter(*pdk.PDK) }
|
||||||
|
bodyFilter interface{ BodyFilter(*pdk.PDK) }
|
||||||
|
prereader interface{ Preread(*pdk.PDK) }
|
||||||
|
logger interface{ Log(*pdk.PDK) }
|
||||||
|
)
|
||||||
|
|
||||||
|
func getHandlers(config interface{}) map[string]func(kong *pdk.PDK) {
|
||||||
|
handlers := map[string]func(kong *pdk.PDK){}
|
||||||
|
|
||||||
|
if h, ok := config.(certificater); ok { handlers["certificate"] = h.Certificate }
|
||||||
|
if h, ok := config.(rewriter) ; ok { handlers["rewrite"] = h.Rewrite }
|
||||||
|
if h, ok := config.(accesser) ; ok { handlers["access"] = h.Access }
|
||||||
|
if h, ok := config.(headerFilter); ok { handlers["header_filter"] = h.HeaderFilter }
|
||||||
|
if h, ok := config.(bodyFilter) ; ok { handlers["body_filter"] = h.BodyFilter }
|
||||||
|
if h, ok := config.(prereader) ; ok { handlers["preread"] = h.Preread }
|
||||||
|
if h, ok := config.(logger) ; ok { handlers["log"] = h.Log }
|
||||||
|
|
||||||
|
return handlers
|
||||||
|
}
|
||||||
|
|
||||||
type PluginConfig struct {
|
type PluginConfig struct {
|
||||||
Name string
|
Name string
|
||||||
Config []byte
|
Config []byte
|
||||||
|
Reference in New Issue
Block a user