优化节点压缩程序

This commit is contained in:
GoEdgeLab
2023-03-18 22:44:23 +08:00
parent e7bc478685
commit a4b432401a

View File

@@ -753,29 +753,41 @@ func (this *NodeService) FindCurrentNodeConfig(ctx context.Context, req *pb.Find
return nil, err return nil, err
} }
data, err := json.Marshal(nodeConfig) // 压缩
var data []byte
var isCompressed = false
var buffer = &bytes.Buffer{}
var writer io.Writer = buffer
var brotliWriter *brotli.Writer
if req.Compress {
brotliWriter = brotli.NewWriterLevel(writer, 5)
writer = brotliWriter
}
var encoder = json.NewEncoder(writer)
err = encoder.Encode(nodeConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
// 压缩 if brotliWriter != nil {
var isCompressed = false err = brotliWriter.Close()
if req.Compress {
var buf = &bytes.Buffer{}
writer := brotli.NewWriterLevel(buf, 5)
_, err = writer.Write(data)
if err != nil {
_ = writer.Close()
} else {
err = writer.Close()
if err == nil { if err == nil {
data = buffer.Bytes()
isCompressed = true isCompressed = true
data = buf.Bytes() } else {
buf.Reset() // 如果失败,则使用最直接方法重新编码
data, err = json.Marshal(nodeConfig)
if err != nil {
return nil, err
} }
} }
} else {
data = buffer.Bytes()
} }
buffer.Reset()
return &pb.FindCurrentNodeConfigResponse{ return &pb.FindCurrentNodeConfigResponse{
IsChanged: true, IsChanged: true,
NodeJSON: data, NodeJSON: data,