优化节点压缩程序

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 { if err == nil {
var buf = &bytes.Buffer{} data = buffer.Bytes()
writer := brotli.NewWriterLevel(buf, 5) isCompressed = true
_, err = writer.Write(data)
if err != nil {
_ = writer.Close()
} else { } else {
err = writer.Close() // 如果失败,则使用最直接方法重新编码
if err == nil { data, err = json.Marshal(nodeConfig)
isCompressed = true if err != nil {
data = buf.Bytes() return nil, err
buf.Reset()
} }
} }
} else {
data = buffer.Bytes()
} }
buffer.Reset()
return &pb.FindCurrentNodeConfigResponse{ return &pb.FindCurrentNodeConfigResponse{
IsChanged: true, IsChanged: true,
NodeJSON: data, NodeJSON: data,