| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package router
- import (
- "v2ray.com/core/app"
- "v2ray.com/core/common"
- "v2ray.com/core/common/log"
- v2net "v2ray.com/core/common/net"
- )
- const (
- APP_ID = app.ID(3)
- )
- type Router interface {
- common.Releasable
- TakeDetour(v2net.Destination) (string, error)
- }
- type RouterFactory interface {
- Create(rawConfig interface{}, space app.Space) (Router, error)
- }
- var (
- routerCache = make(map[string]RouterFactory)
- )
- func RegisterRouter(name string, factory RouterFactory) error {
- if _, found := routerCache[name]; found {
- return common.ErrDuplicatedName
- }
- routerCache[name] = factory
- return nil
- }
- func CreateRouter(name string, rawConfig interface{}, space app.Space) (Router, error) {
- if factory, found := routerCache[name]; found {
- return factory.Create(rawConfig, space)
- }
- log.Error("Router: not found: ", name)
- return nil, common.ErrObjectNotFound
- }
|