mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +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