mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	优化节点压缩程序
This commit is contained in:
		@@ -753,29 +753,41 @@ func (this *NodeService) FindCurrentNodeConfig(ctx context.Context, req *pb.Find
 | 
			
		||||
		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 {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 压缩
 | 
			
		||||
	var isCompressed = false
 | 
			
		||||
	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 brotliWriter != nil {
 | 
			
		||||
		err = brotliWriter.Close()
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			data = buffer.Bytes()
 | 
			
		||||
			isCompressed = true
 | 
			
		||||
				data = buf.Bytes()
 | 
			
		||||
				buf.Reset()
 | 
			
		||||
		} else {
 | 
			
		||||
			// 如果失败,则使用最直接方法重新编码
 | 
			
		||||
			data, err = json.Marshal(nodeConfig)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		data = buffer.Bytes()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	buffer.Reset()
 | 
			
		||||
 | 
			
		||||
	return &pb.FindCurrentNodeConfigResponse{
 | 
			
		||||
		IsChanged:    true,
 | 
			
		||||
		NodeJSON:     data,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user