manager.go 847 字节
Newer Older
Y
Your Name 已提交
1
package pluginmanager
E
eoLinker API Management 已提交
2 3 4 5 6

import (
	"sort"
	"sync"

黄孟柱 已提交
7
	entity "github.com/eolinker/goku-api-gateway/server/entity/node-entity"
E
eoLinker API Management 已提交
8 9 10 11 12 13 14 15 16 17 18
)

// 写插件管理包对外接口
var (
	pluginHandles  = make(map[string]*entity.PluginFactoryHandler)
	defaultPlugins []*entity.PluginHandlerExce
	locker         = sync.RWMutex{}

	beforPlugins []*entity.PluginHandlerExce
)

Y
Your Name 已提交
19
//GetPluginHandle 获取单一插件handle
E
eoLinker API Management 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
func GetPluginHandle(name string) *entity.PluginFactoryHandler {
	locker.RLock()
	handle := pluginHandles[name]
	locker.RUnlock()

	return handle
}
func reset(pis map[string]*entity.PluginInfo) {
	plugins, def, before := LoadPlugin(pis)

	sort.Sort(sort.Reverse(entity.PluginSlice(def)))
	sort.Sort(sort.Reverse(entity.PluginSlice(before)))
	locker.Lock()
	defer locker.Unlock()

	pluginHandles = plugins
	defaultPlugins = def
	beforPlugins = before
}