| 1234567891011121314151617181920212223242526272829303132333435 |
- package internet
- import (
- "io"
- "v2ray.com/core/common"
- )
- type ConnectionAuthenticator interface {
- Seal(io.Writer) io.Writer
- Open(io.Reader) (io.Reader, error)
- }
- type ConnectionAuthenticatorFactory interface {
- Create(interface{}) ConnectionAuthenticator
- }
- var (
- connectionAuthenticatorCache = make(map[string]ConnectionAuthenticatorFactory)
- )
- func RegisterConnectionAuthenticator(name string, factory ConnectionAuthenticatorFactory) error {
- if _, found := connectionAuthenticatorCache[name]; found {
- return common.ErrDuplicatedName
- }
- connectionAuthenticatorCache[name] = factory
- return nil
- }
- func CreateConnectionAuthenticator(name string, config interface{}) (ConnectionAuthenticator, error) {
- factory, found := connectionAuthenticatorCache[name]
- if !found {
- return nil, common.ErrObjectNotFound
- }
- return factory.Create(config), nil
- }
|