clashapi.go 803 B

12345678910111213141516171819202122232425
  1. package experimental
  2. import (
  3. "context"
  4. "os"
  5. "github.com/sagernet/sing-box/adapter"
  6. "github.com/sagernet/sing-box/log"
  7. "github.com/sagernet/sing-box/option"
  8. )
  9. type ClashServerConstructor = func(ctx context.Context, router adapter.Router, logFactory log.ObservableFactory, options option.ClashAPIOptions) (adapter.ClashServer, error)
  10. var clashServerConstructor ClashServerConstructor
  11. func RegisterClashServerConstructor(constructor ClashServerConstructor) {
  12. clashServerConstructor = constructor
  13. }
  14. func NewClashServer(ctx context.Context, router adapter.Router, logFactory log.ObservableFactory, options option.ClashAPIOptions) (adapter.ClashServer, error) {
  15. if clashServerConstructor == nil {
  16. return nil, os.ErrInvalid
  17. }
  18. return clashServerConstructor(ctx, router, logFactory, options)
  19. }