allocations improvements and tunnel fixes (#1248)
* reduce allocations in tunnel code Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * another allocation fix Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * allocate maps with len if it known Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * allocate key for send once Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
		
							
								
								
									
										2
									
								
								codec.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								codec.go
									
									
									
									
									
								
							| @@ -155,7 +155,7 @@ func (g *grpcCodec) ReadHeader(m *codec.Message, mt codec.MessageType) error { | ||||
| 		m = new(codec.Message) | ||||
| 	} | ||||
| 	if m.Header == nil { | ||||
| 		m.Header = make(map[string]string) | ||||
| 		m.Header = make(map[string]string, len(md)) | ||||
| 	} | ||||
| 	for k, v := range md { | ||||
| 		m.Header[k] = strings.Join(v, ",") | ||||
|   | ||||
							
								
								
									
										13
									
								
								grpc.go
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								grpc.go
									
									
									
									
									
								
							| @@ -110,13 +110,18 @@ func (g *grpcClient) next(request client.Request, opts client.CallOptions) (sele | ||||
| } | ||||
|  | ||||
| func (g *grpcClient) call(ctx context.Context, node *registry.Node, req client.Request, rsp interface{}, opts client.CallOptions) error { | ||||
| 	var header map[string]string | ||||
|  | ||||
| 	address := node.Address | ||||
|  | ||||
| 	header := make(map[string]string) | ||||
| 	header = make(map[string]string) | ||||
| 	if md, ok := metadata.FromContext(ctx); ok { | ||||
| 		header = make(map[string]string, len(md)) | ||||
| 		for k, v := range md { | ||||
| 			header[k] = v | ||||
| 		} | ||||
| 	} else { | ||||
| 		header = make(map[string]string) | ||||
| 	} | ||||
|  | ||||
| 	// set timeout in nanoseconds | ||||
| @@ -182,13 +187,17 @@ func (g *grpcClient) call(ctx context.Context, node *registry.Node, req client.R | ||||
| } | ||||
|  | ||||
| func (g *grpcClient) stream(ctx context.Context, node *registry.Node, req client.Request, opts client.CallOptions) (client.Stream, error) { | ||||
| 	var header map[string]string | ||||
|  | ||||
| 	address := node.Address | ||||
|  | ||||
| 	header := make(map[string]string) | ||||
| 	if md, ok := metadata.FromContext(ctx); ok { | ||||
| 		header = make(map[string]string, len(md)) | ||||
| 		for k, v := range md { | ||||
| 			header[k] = v | ||||
| 		} | ||||
| 	} else { | ||||
| 		header = make(map[string]string) | ||||
| 	} | ||||
|  | ||||
| 	// set timeout in nanoseconds | ||||
|   | ||||
| @@ -27,7 +27,7 @@ func (r *response) Header() map[string]string { | ||||
| 	if err != nil { | ||||
| 		return map[string]string{} | ||||
| 	} | ||||
| 	hdr := make(map[string]string) | ||||
| 	hdr := make(map[string]string, len(md)) | ||||
| 	for k, v := range md { | ||||
| 		hdr[k] = strings.Join(v, ",") | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user