Files
trojan-go/common/option.go
T

28 lines
554 B
Go

package common
type OptionHandler interface {
Name() string
Handle() error
Priority() int
}
var handlers = make(map[string]OptionHandler)
func RegisterOptionHandler(h OptionHandler) {
handlers[h.Name()] = h
}
func PopOptionHandler() (OptionHandler, error) {
var maxHandler OptionHandler = nil
for _, h := range handlers {
if maxHandler == nil || maxHandler.Priority() < h.Priority() {
maxHandler = h
}
}
if maxHandler == nil {
return nil, NewError("No options left")
}
delete(handlers, maxHandler.Name())
return maxHandler, nil
}