github.com/v2fly/v2ray-core/v5@v5.16.2-0.20240507031116-8191faa6e095/infra/conf/v5cfg/common.go (about) 1 package v5cfg 2 3 import ( 4 "context" 5 "encoding/json" 6 7 "github.com/golang/protobuf/proto" 8 9 "github.com/v2fly/v2ray-core/v5/common/environment/envctx" 10 "github.com/v2fly/v2ray-core/v5/common/environment/envimpl" 11 "github.com/v2fly/v2ray-core/v5/common/registry" 12 ) 13 14 func loadHeterogeneousConfigFromRawJSON(interfaceType, name string, rawJSON json.RawMessage) (proto.Message, error) { 15 fsdef := envimpl.NewDefaultFileSystemDefaultImpl() 16 ctx := envctx.ContextWithEnvironment(context.TODO(), fsdef) 17 if len(rawJSON) == 0 { 18 rawJSON = []byte("{}") 19 } 20 return registry.LoadImplementationByAlias(ctx, interfaceType, name, []byte(rawJSON)) 21 } 22 23 // LoadHeterogeneousConfigFromRawJSON private API 24 func LoadHeterogeneousConfigFromRawJSON(ctx context.Context, interfaceType, name string, rawJSON json.RawMessage) (proto.Message, error) { 25 return loadHeterogeneousConfigFromRawJSON(interfaceType, name, rawJSON) 26 }