mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-05 00:31:54 +08:00
优化节点压缩程序
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user