proxyman.go 1003 B

1234567891011121314151617181920212223242526272829303132333435
  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/common/serial"
  6. "v2ray.com/core/proxy"
  7. )
  8. type InboundHandlerManager interface {
  9. GetHandler(tag string) (proxy.InboundHandler, int)
  10. }
  11. type OutboundHandlerManager interface {
  12. GetHandler(tag string) proxy.OutboundHandler
  13. GetDefaultHandler() proxy.OutboundHandler
  14. SetDefaultHandler(handler proxy.OutboundHandler) error
  15. SetHandler(tag string, handler proxy.OutboundHandler) error
  16. }
  17. func InboundHandlerManagerFromSpace(space app.Space) InboundHandlerManager {
  18. app := space.(app.AppGetter).GetApp(serial.GetMessageType((*InboundConfig)(nil)))
  19. if app == nil {
  20. return nil
  21. }
  22. return app.(InboundHandlerManager)
  23. }
  24. func OutboundHandlerManagerFromSpace(space app.Space) OutboundHandlerManager {
  25. app := space.(app.AppGetter).GetApp(serial.GetMessageType((*OutboundConfig)(nil)))
  26. if app == nil {
  27. return nil
  28. }
  29. return app.(OutboundHandlerManager)
  30. }