remove proto object allocs on streaming benchmark server
This commit is contained in:
@ -47,7 +47,8 @@ import (
|
|||||||
"google.golang.org/grpc/grpclog"
|
"google.golang.org/grpc/grpclog"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newPayload(t testpb.PayloadType, size int) *testpb.Payload {
|
// allows reuse of the same testpb.Payload object
|
||||||
|
func setPayload(p *testpb.Payload, t testpb.PayloadType, size int) {
|
||||||
if size < 0 {
|
if size < 0 {
|
||||||
grpclog.Fatalf("Requested a response with invalid length %d", size)
|
grpclog.Fatalf("Requested a response with invalid length %d", size)
|
||||||
}
|
}
|
||||||
@ -59,10 +60,15 @@ func newPayload(t testpb.PayloadType, size int) *testpb.Payload {
|
|||||||
default:
|
default:
|
||||||
grpclog.Fatalf("Unsupported payload type: %d", t)
|
grpclog.Fatalf("Unsupported payload type: %d", t)
|
||||||
}
|
}
|
||||||
return &testpb.Payload{
|
p.Type = t
|
||||||
Type: t,
|
p.Body = body
|
||||||
Body: body,
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newPayload(t testpb.PayloadType, size int) *testpb.Payload {
|
||||||
|
p := new(testpb.Payload)
|
||||||
|
setPayload(p, t, size)
|
||||||
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
type testServer struct {
|
type testServer struct {
|
||||||
@ -75,8 +81,12 @@ func (s *testServer) UnaryCall(ctx context.Context, in *testpb.SimpleRequest) (*
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *testServer) StreamingCall(stream testpb.BenchmarkService_StreamingCallServer) error {
|
func (s *testServer) StreamingCall(stream testpb.BenchmarkService_StreamingCallServer) error {
|
||||||
|
response := new(testpb.SimpleResponse)
|
||||||
|
payload := new(testpb.Payload)
|
||||||
|
in := new(testpb.SimpleRequest)
|
||||||
for {
|
for {
|
||||||
in, err := stream.Recv()
|
// use ServerStream directly to reuse the same testpb.SimpleRequest object
|
||||||
|
err := stream.(grpc.ServerStream).RecvMsg(in)
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
// read done.
|
// read done.
|
||||||
return nil
|
return nil
|
||||||
@ -84,9 +94,9 @@ func (s *testServer) StreamingCall(stream testpb.BenchmarkService_StreamingCallS
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := stream.Send(&testpb.SimpleResponse{
|
setPayload(payload, in.ResponseType, int(in.ResponseSize))
|
||||||
Payload: newPayload(in.ResponseType, int(in.ResponseSize)),
|
response.Payload = payload
|
||||||
}); err != nil {
|
if err := stream.Send(response); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user