| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package registry
- import (
- "v2ray.com/core/common/loader"
- "github.com/golang/protobuf/proto"
- "github.com/golang/protobuf/ptypes"
- "github.com/golang/protobuf/ptypes/any"
- )
- var (
- inboundConfigCreatorCache = loader.ConfigCreatorCache{}
- outboundConfigCreatorCache = loader.ConfigCreatorCache{}
- )
- func RegisterInboundConfig(protocol string, creator loader.ConfigCreator) error {
- return inboundConfigCreatorCache.RegisterCreator(protocol, creator)
- }
- func RegisterOutboundConfig(protocol string, creator loader.ConfigCreator) error {
- return outboundConfigCreatorCache.RegisterCreator(protocol, creator)
- }
- func MarshalInboundConfig(protocol string, settings *any.Any) (interface{}, error) {
- config, err := inboundConfigCreatorCache.CreateConfig(protocol)
- if err != nil {
- return nil, err
- }
- if settings == nil {
- return config, nil
- }
- if err := ptypes.UnmarshalAny(settings, config.(proto.Message)); err != nil {
- return nil, err
- }
- return config, nil
- }
- func MarshalOutboundConfig(protocol string, settings *any.Any) (interface{}, error) {
- config, err := outboundConfigCreatorCache.CreateConfig(protocol)
- if err != nil {
- return nil, err
- }
- if settings == nil {
- return config, nil
- }
- if err := ptypes.UnmarshalAny(settings, config.(proto.Message)); err != nil {
- return nil, err
- }
- return config, nil
- }
|