inbound.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package inbound
  2. import (
  3. "context"
  4. "github.com/xtls/xray-core/common"
  5. "github.com/xtls/xray-core/common/net"
  6. "github.com/xtls/xray-core/common/serial"
  7. "github.com/xtls/xray-core/features"
  8. )
  9. // Handler is the interface for handlers that process inbound connections.
  10. //
  11. // xray:api:stable
  12. type Handler interface {
  13. common.Runnable
  14. // The tag of this handler.
  15. Tag() string
  16. // Returns the active receiver settings.
  17. ReceiverSettings() *serial.TypedMessage
  18. // Returns the active proxy settings.
  19. ProxySettings() *serial.TypedMessage
  20. // Deprecated: Do not use in new code.
  21. GetRandomInboundProxy() (interface{}, net.Port, int)
  22. }
  23. // Manager is a feature that manages InboundHandlers.
  24. //
  25. // xray:api:stable
  26. type Manager interface {
  27. features.Feature
  28. // GetHandler returns an InboundHandler for the given tag.
  29. GetHandler(ctx context.Context, tag string) (Handler, error)
  30. // AddHandler adds the given handler into this Manager.
  31. AddHandler(ctx context.Context, handler Handler) error
  32. // RemoveHandler removes a handler from Manager.
  33. RemoveHandler(ctx context.Context, tag string) error
  34. // ListHandlers returns a list of inbound.Handler.
  35. ListHandlers(ctx context.Context) []Handler
  36. }
  37. // ManagerType returns the type of Manager interface. Can be used for implementing common.HasType.
  38. //
  39. // xray:api:stable
  40. func ManagerType() interface{} {
  41. return (*Manager)(nil)
  42. }