// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

syntax = "proto3";

package goproto.protoc.grpc;

option go_package = "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/grpc";

message Request {}
message Response {}

service Test {
  rpc UnaryCall(Request) returns (Response);

  // This RPC streams from the server only.
  rpc Downstream(Request) returns (stream Response);

  // This RPC streams from the client.
  rpc Upstream(stream Request) returns (Response);

  // This one streams in both directions.
  rpc Bidi(stream Request) returns (stream Response);
}
