config_cache.go 585 B

1234567891011121314151617181920212223242526272829
  1. package router
  2. import (
  3. "v2ray.com/core/common"
  4. )
  5. type ConfigObjectCreator func([]byte) (interface{}, error)
  6. var (
  7. configCache map[string]ConfigObjectCreator
  8. )
  9. func RegisterRouterConfig(strategy string, creator ConfigObjectCreator) error {
  10. // TODO: check strategy
  11. configCache[strategy] = creator
  12. return nil
  13. }
  14. func CreateRouterConfig(strategy string, data []byte) (interface{}, error) {
  15. creator, found := configCache[strategy]
  16. if !found {
  17. return nil, common.ErrObjectNotFound
  18. }
  19. return creator(data)
  20. }
  21. func init() {
  22. configCache = make(map[string]ConfigObjectCreator)
  23. }