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