proxyman.go 904 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package proxyman
  2. import (
  3. "github.com/v2ray/v2ray-core/app"
  4. "github.com/v2ray/v2ray-core/proxy"
  5. )
  6. const (
  7. APP_ID_INBOUND_MANAGER = app.ID(4)
  8. )
  9. type InboundHandlerManager interface {
  10. GetHandler(tag string) (proxy.InboundHandler, int)
  11. }
  12. type inboundHandlerManagerWithContext interface {
  13. GetHandler(context app.Context, tag string) (proxy.InboundHandler, int)
  14. }
  15. type inboundHandlerManagerWithContextImpl struct {
  16. context app.Context
  17. manager inboundHandlerManagerWithContext
  18. }
  19. func (this *inboundHandlerManagerWithContextImpl) GetHandler(tag string) (proxy.InboundHandler, int) {
  20. return this.manager.GetHandler(this.context, tag)
  21. }
  22. func init() {
  23. app.Register(APP_ID_INBOUND_MANAGER, func(context app.Context, obj interface{}) interface{} {
  24. manager := obj.(inboundHandlerManagerWithContext)
  25. return &inboundHandlerManagerWithContextImpl{
  26. context: context,
  27. manager: manager,
  28. }
  29. })
  30. }