proxyman.go 925 B

12345678910111213141516171819202122232425262728293031323334
  1. // Package proxyman defines applications for manageing inbound and outbound proxies.
  2. package proxyman
  3. import (
  4. "v2ray.com/core/app"
  5. "v2ray.com/core/proxy"
  6. )
  7. type InboundHandlerManager interface {
  8. GetHandler(tag string) (proxy.InboundHandler, int)
  9. }
  10. type OutboundHandlerManager interface {
  11. GetHandler(tag string) proxy.OutboundHandler
  12. GetDefaultHandler() proxy.OutboundHandler
  13. SetDefaultHandler(handler proxy.OutboundHandler) error
  14. SetHandler(tag string, handler proxy.OutboundHandler) error
  15. }
  16. func InboundHandlerManagerFromSpace(space app.Space) InboundHandlerManager {
  17. app := space.GetApplication((*InboundHandlerManager)(nil))
  18. if app == nil {
  19. return nil
  20. }
  21. return app.(InboundHandlerManager)
  22. }
  23. func OutboundHandlerManagerFromSpace(space app.Space) OutboundHandlerManager {
  24. app := space.GetApplication((*OutboundHandlerManager)(nil))
  25. if app == nil {
  26. return nil
  27. }
  28. return app.(OutboundHandlerManager)
  29. }