From 30e7668a940a6bd460d4bc538d8ef2dc43cfcd11 Mon Sep 17 00:00:00 2001 From: Allo Date: Tue, 9 Jan 2024 13:12:17 +0800 Subject: [PATCH] refactor: simplify protobuf related code --- infra/conf/jsonpb/jsonpb.go | 21 +++++++-------------- infra/conf/synthetic/dns/dns_test.go | 6 +++--- infra/conf/v2jsonpb/v2jsonpb.go | 4 ++-- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/infra/conf/jsonpb/jsonpb.go b/infra/conf/jsonpb/jsonpb.go index 4c17d49c23..04c005047c 100644 --- a/infra/conf/jsonpb/jsonpb.go +++ b/infra/conf/jsonpb/jsonpb.go @@ -1,7 +1,6 @@ package jsonpb import ( - "bytes" "io" "google.golang.org/protobuf/encoding/protojson" @@ -16,16 +15,10 @@ import ( //go:generate go run github.com/v2fly/v2ray-core/v5/common/errors/errorgen -func loadJSONPB(reader io.Reader) (*core.Config, error) { +func loadJSONPB(data []byte) (*core.Config, error) { coreconf := &core.Config{} - jsonpbloader := &protojson.UnmarshalOptions{Resolver: serial.GetResolver()} - data := buf.New() - defer data.Release() - _, err := data.ReadFrom(reader) - if err != nil { - return nil, err - } - err = jsonpbloader.Unmarshal(data.Bytes(), coreconf) + jsonpbloader := protojson.UnmarshalOptions{Resolver: serial.GetResolver()} + err := jsonpbloader.Unmarshal(data, coreconf) if err != nil { return nil, err } @@ -33,7 +26,7 @@ func loadJSONPB(reader io.Reader) (*core.Config, error) { } func dumpJSONPb(config proto.Message, w io.Writer) error { - jsonpbdumper := &protojson.MarshalOptions{Resolver: serial.GetResolver()} + jsonpbdumper := protojson.MarshalOptions{Resolver: serial.GetResolver()} data, err := jsonpbdumper.Marshal(config) if err != nil { return err @@ -63,15 +56,15 @@ func init() { if err != nil { return nil, err } - return loadJSONPB(bytes.NewReader(data)) + return loadJSONPB(data) case []byte: - return loadJSONPB(bytes.NewReader(v)) + return loadJSONPB(v) case io.Reader: data, err := buf.ReadAllToBytes(v) if err != nil { return nil, err } - return loadJSONPB(bytes.NewReader(data)) + return loadJSONPB(data) default: return nil, newError("unknown type") } diff --git a/infra/conf/synthetic/dns/dns_test.go b/infra/conf/synthetic/dns/dns_test.go index 37ed3304be..867610bfb9 100644 --- a/infra/conf/synthetic/dns/dns_test.go +++ b/infra/conf/synthetic/dns/dns_test.go @@ -8,7 +8,7 @@ import ( "path/filepath" "testing" - "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/proto" "github.com/v2fly/v2ray-core/v5/app/dns" "github.com/v2fly/v2ray-core/v5/app/dns/fakedns" @@ -50,8 +50,8 @@ func init() { } func TestDNSConfigParsing(t *testing.T) { - parserCreator := func() func(string) (protoreflect.ProtoMessage, error) { - return func(s string) (protoreflect.ProtoMessage, error) { + parserCreator := func() func(string) (proto.Message, error) { + return func(s string) (proto.Message, error) { config := new(dns2.DNSConfig) if err := json.Unmarshal([]byte(s), config); err != nil { return nil, err diff --git a/infra/conf/v2jsonpb/v2jsonpb.go b/infra/conf/v2jsonpb/v2jsonpb.go index 4523fb0293..c79fba45f6 100644 --- a/infra/conf/v2jsonpb/v2jsonpb.go +++ b/infra/conf/v2jsonpb/v2jsonpb.go @@ -17,7 +17,7 @@ import ( func loadV2JsonPb(data []byte) (*core.Config, error) { coreconf := &core.Config{} - jsonpbloader := &protojson.UnmarshalOptions{Resolver: serial.GetResolver(), AllowPartial: true} + jsonpbloader := protojson.UnmarshalOptions{Resolver: serial.GetResolver(), AllowPartial: true} err := jsonpbloader.Unmarshal(data, &V2JsonProtobufFollower{coreconf.ProtoReflect()}) if err != nil { return nil, err @@ -26,7 +26,7 @@ func loadV2JsonPb(data []byte) (*core.Config, error) { } func dumpV2JsonPb(config proto.Message) ([]byte, error) { - jsonpbdumper := &protojson.MarshalOptions{Resolver: serial.GetResolver(), AllowPartial: true} + jsonpbdumper := protojson.MarshalOptions{Resolver: serial.GetResolver(), AllowPartial: true} bytew, err := jsonpbdumper.Marshal(&V2JsonProtobufFollower{config.ProtoReflect()}) if err != nil { return nil, err