common_instanceMgr.go 843 B

123456789101112131415161718192021222324252627
  1. package scenarios
  2. import (
  3. core "github.com/v2fly/v2ray-core/v5"
  4. "github.com/v2fly/v2ray-core/v5/app/instman"
  5. "github.com/v2fly/v2ray-core/v5/common"
  6. "github.com/v2fly/v2ray-core/v5/common/serial"
  7. "github.com/v2fly/v2ray-core/v5/features/extension"
  8. )
  9. func NewInstanceManagerInstanceConfig() *core.Config {
  10. config := &core.Config{}
  11. config.App = append(config.App, serial.ToTypedMessage(&instman.Config{}))
  12. return config
  13. }
  14. func NewInstanceManagerCoreInstance() (*core.Instance, extension.InstanceManagement) {
  15. coreConfig := NewInstanceManagerInstanceConfig()
  16. instance, err := core.New(coreConfig)
  17. if err != nil {
  18. panic(err)
  19. }
  20. common.Must(instance.Start())
  21. instanceMgr := instance.GetFeature(extension.InstanceManagementType())
  22. InstanceMgrIfce := instanceMgr.(extension.InstanceManagement)
  23. return instance, InstanceMgrIfce
  24. }