manager.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package plugin_manager
  2. import (
  3. "fmt"
  4. "github.com/langgenius/dify-plugin-daemon/internal/types/app"
  5. "github.com/langgenius/dify-plugin-daemon/internal/types/entities"
  6. "github.com/langgenius/dify-plugin-daemon/internal/utils/cache"
  7. "github.com/langgenius/dify-plugin-daemon/internal/utils/log"
  8. )
  9. func List() []entities.PluginRuntimeInterface {
  10. var runtimes []entities.PluginRuntimeInterface
  11. m.Range(func(key, value interface{}) bool {
  12. if v, ok := value.(entities.PluginRuntimeInterface); ok {
  13. runtimes = append(runtimes, v)
  14. }
  15. return true
  16. })
  17. return runtimes
  18. }
  19. func Get(identity string) entities.PluginRuntimeInterface {
  20. if v, ok := m.Load(identity); ok {
  21. if r, ok := v.(entities.PluginRuntimeInterface); ok {
  22. return r
  23. }
  24. }
  25. return nil
  26. }
  27. func Put(path string, binary []byte) {
  28. //TODO: put binary into
  29. }
  30. func Delete(identity string) {
  31. //TODO: delete binary from
  32. }
  33. func Init(configuration *app.Config) {
  34. // TODO: init plugin manager
  35. log.Info("start plugin manager daemon...")
  36. // init redis client
  37. if err := cache.InitRedisClient(
  38. fmt.Sprintf("%s:%d", configuration.RedisHost, configuration.RedisPort),
  39. configuration.RedisPass,
  40. ); err != nil {
  41. log.Panic("init redis client failed: %s", err.Error())
  42. }
  43. // start plugin watcher
  44. startWatcher(configuration)
  45. // start plugin lifetime manager
  46. startLifeTimeManager(configuration)
  47. }