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  }