manager.go 1.6 KB

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