// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.22.0
// 	protoc        v3.12.2
// source: google/cloud/gaming/v1beta/game_server_clusters_service.proto

package gaming

import (
	context "context"
	reflect "reflect"

	proto "github.com/golang/protobuf/proto"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	longrunning "google.golang.org/genproto/googleapis/longrunning"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

var File_google_cloud_gaming_v1beta_game_server_clusters_service_proto protoreflect.FileDescriptor

var file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_rawDesc = []byte{
	0x0a, 0x3d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67,
	0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x67, 0x61, 0x6d,
	0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x61,
	0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x1a, 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2f, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x67,
	0x61, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xdb,
	0x11, 0x0a, 0x19, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xe5, 0x01, 0x0a,
	0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e,
	0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f,
	0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x72,
	0x65, 0x61, 0x6c, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61,
	0x72, 0x65, 0x6e, 0x74, 0x12, 0xd2, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x61, 0x6d, 0x65,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x37, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x61, 0x6d,
	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61,
	0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f,
	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x61, 0x6d,
	0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f,
	0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xb4, 0x02, 0x0a, 0x17, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72,
	0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x22, 0xbd, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x22, 0x43, 0x2f, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
	0x2a, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x67, 0x61, 0x6d, 0x65,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x3a, 0x13,
	0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0xda, 0x41, 0x31, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x67, 0x61, 0x6d,
	0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x2c, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0xca, 0x41, 0x26, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x11, 0x4f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x12, 0x97, 0x02, 0x0a, 0x1e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61,
	0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x68, 0x22, 0x51, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x6d,
	0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x3a, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0xf1, 0x01, 0x0a, 0x17, 0x44,
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67,
	0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x2a, 0x43, 0x2f, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
	0x72, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0xca, 0x41, 0x26, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x11, 0x4f, 0x70, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x82,
	0x02, 0x0a, 0x1e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50,
	0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47,
	0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53,
	0x2a, 0x51, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x2f, 0x2a, 0x2f,
	0x67, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x12, 0xb6, 0x02, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61,
	0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12,
	0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67,
	0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
	0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x01, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x6e, 0x32, 0x57, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x67, 0x61,
	0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
	0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65,
	0x61, 0x6c, 0x6d, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65,
	0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x13, 0x67, 0x61,
	0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0xda, 0x41, 0x1f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f,
	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d,
	0x61, 0x73, 0x6b, 0xca, 0x41, 0x26, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xac, 0x02, 0x0a,
	0x1e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61,
	0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12,
	0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67,
	0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x65,
	0x76, 0x69, 0x65, 0x77, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e,
	0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d,
	0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7c, 0x32,
	0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73,
	0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61,
	0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x73,
	0x2f, 0x2a, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x4f, 0xca, 0x41, 0x1b,
	0x67, 0x61, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74,
	0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x64, 0x0a, 0x1e,
	0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x67, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x50, 0x01,
	0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
	0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, 0x61,
	0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x3b, 0x67, 0x61, 0x6d, 0x69,
	0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_goTypes = []interface{}{
	(*ListGameServerClustersRequest)(nil),          // 0: google.cloud.gaming.v1beta.ListGameServerClustersRequest
	(*GetGameServerClusterRequest)(nil),            // 1: google.cloud.gaming.v1beta.GetGameServerClusterRequest
	(*CreateGameServerClusterRequest)(nil),         // 2: google.cloud.gaming.v1beta.CreateGameServerClusterRequest
	(*PreviewCreateGameServerClusterRequest)(nil),  // 3: google.cloud.gaming.v1beta.PreviewCreateGameServerClusterRequest
	(*DeleteGameServerClusterRequest)(nil),         // 4: google.cloud.gaming.v1beta.DeleteGameServerClusterRequest
	(*PreviewDeleteGameServerClusterRequest)(nil),  // 5: google.cloud.gaming.v1beta.PreviewDeleteGameServerClusterRequest
	(*UpdateGameServerClusterRequest)(nil),         // 6: google.cloud.gaming.v1beta.UpdateGameServerClusterRequest
	(*PreviewUpdateGameServerClusterRequest)(nil),  // 7: google.cloud.gaming.v1beta.PreviewUpdateGameServerClusterRequest
	(*ListGameServerClustersResponse)(nil),         // 8: google.cloud.gaming.v1beta.ListGameServerClustersResponse
	(*GameServerCluster)(nil),                      // 9: google.cloud.gaming.v1beta.GameServerCluster
	(*longrunning.Operation)(nil),                  // 10: google.longrunning.Operation
	(*PreviewCreateGameServerClusterResponse)(nil), // 11: google.cloud.gaming.v1beta.PreviewCreateGameServerClusterResponse
	(*PreviewDeleteGameServerClusterResponse)(nil), // 12: google.cloud.gaming.v1beta.PreviewDeleteGameServerClusterResponse
	(*PreviewUpdateGameServerClusterResponse)(nil), // 13: google.cloud.gaming.v1beta.PreviewUpdateGameServerClusterResponse
}
var file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_depIdxs = []int32{
	0,  // 0: google.cloud.gaming.v1beta.GameServerClustersService.ListGameServerClusters:input_type -> google.cloud.gaming.v1beta.ListGameServerClustersRequest
	1,  // 1: google.cloud.gaming.v1beta.GameServerClustersService.GetGameServerCluster:input_type -> google.cloud.gaming.v1beta.GetGameServerClusterRequest
	2,  // 2: google.cloud.gaming.v1beta.GameServerClustersService.CreateGameServerCluster:input_type -> google.cloud.gaming.v1beta.CreateGameServerClusterRequest
	3,  // 3: google.cloud.gaming.v1beta.GameServerClustersService.PreviewCreateGameServerCluster:input_type -> google.cloud.gaming.v1beta.PreviewCreateGameServerClusterRequest
	4,  // 4: google.cloud.gaming.v1beta.GameServerClustersService.DeleteGameServerCluster:input_type -> google.cloud.gaming.v1beta.DeleteGameServerClusterRequest
	5,  // 5: google.cloud.gaming.v1beta.GameServerClustersService.PreviewDeleteGameServerCluster:input_type -> google.cloud.gaming.v1beta.PreviewDeleteGameServerClusterRequest
	6,  // 6: google.cloud.gaming.v1beta.GameServerClustersService.UpdateGameServerCluster:input_type -> google.cloud.gaming.v1beta.UpdateGameServerClusterRequest
	7,  // 7: google.cloud.gaming.v1beta.GameServerClustersService.PreviewUpdateGameServerCluster:input_type -> google.cloud.gaming.v1beta.PreviewUpdateGameServerClusterRequest
	8,  // 8: google.cloud.gaming.v1beta.GameServerClustersService.ListGameServerClusters:output_type -> google.cloud.gaming.v1beta.ListGameServerClustersResponse
	9,  // 9: google.cloud.gaming.v1beta.GameServerClustersService.GetGameServerCluster:output_type -> google.cloud.gaming.v1beta.GameServerCluster
	10, // 10: google.cloud.gaming.v1beta.GameServerClustersService.CreateGameServerCluster:output_type -> google.longrunning.Operation
	11, // 11: google.cloud.gaming.v1beta.GameServerClustersService.PreviewCreateGameServerCluster:output_type -> google.cloud.gaming.v1beta.PreviewCreateGameServerClusterResponse
	10, // 12: google.cloud.gaming.v1beta.GameServerClustersService.DeleteGameServerCluster:output_type -> google.longrunning.Operation
	12, // 13: google.cloud.gaming.v1beta.GameServerClustersService.PreviewDeleteGameServerCluster:output_type -> google.cloud.gaming.v1beta.PreviewDeleteGameServerClusterResponse
	10, // 14: google.cloud.gaming.v1beta.GameServerClustersService.UpdateGameServerCluster:output_type -> google.longrunning.Operation
	13, // 15: google.cloud.gaming.v1beta.GameServerClustersService.PreviewUpdateGameServerCluster:output_type -> google.cloud.gaming.v1beta.PreviewUpdateGameServerClusterResponse
	8,  // [8:16] is the sub-list for method output_type
	0,  // [0:8] is the sub-list for method input_type
	0,  // [0:0] is the sub-list for extension type_name
	0,  // [0:0] is the sub-list for extension extendee
	0,  // [0:0] is the sub-list for field type_name
}

func init() { file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_init() }
func file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_init() {
	if File_google_cloud_gaming_v1beta_game_server_clusters_service_proto != nil {
		return
	}
	file_google_cloud_gaming_v1beta_game_server_clusters_proto_init()
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   0,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_goTypes,
		DependencyIndexes: file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_depIdxs,
	}.Build()
	File_google_cloud_gaming_v1beta_game_server_clusters_service_proto = out.File
	file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_rawDesc = nil
	file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_goTypes = nil
	file_google_cloud_gaming_v1beta_game_server_clusters_service_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// GameServerClustersServiceClient is the client API for GameServerClustersService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type GameServerClustersServiceClient interface {
	// Lists Game Server Clusters in a given project and location.
	ListGameServerClusters(ctx context.Context, in *ListGameServerClustersRequest, opts ...grpc.CallOption) (*ListGameServerClustersResponse, error)
	// Gets details of a single game server cluster.
	GetGameServerCluster(ctx context.Context, in *GetGameServerClusterRequest, opts ...grpc.CallOption) (*GameServerCluster, error)
	// Creates a new game server cluster in a given project and location.
	CreateGameServerCluster(ctx context.Context, in *CreateGameServerClusterRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Previews creation of a new game server cluster in a given project and
	// location.
	PreviewCreateGameServerCluster(ctx context.Context, in *PreviewCreateGameServerClusterRequest, opts ...grpc.CallOption) (*PreviewCreateGameServerClusterResponse, error)
	// Deletes a single game server cluster.
	DeleteGameServerCluster(ctx context.Context, in *DeleteGameServerClusterRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Previews deletion of a single game server cluster.
	PreviewDeleteGameServerCluster(ctx context.Context, in *PreviewDeleteGameServerClusterRequest, opts ...grpc.CallOption) (*PreviewDeleteGameServerClusterResponse, error)
	// Patches a single game server cluster.
	UpdateGameServerCluster(ctx context.Context, in *UpdateGameServerClusterRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
	// Previews updating a GameServerCluster.
	PreviewUpdateGameServerCluster(ctx context.Context, in *PreviewUpdateGameServerClusterRequest, opts ...grpc.CallOption) (*PreviewUpdateGameServerClusterResponse, error)
}

type gameServerClustersServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewGameServerClustersServiceClient(cc grpc.ClientConnInterface) GameServerClustersServiceClient {
	return &gameServerClustersServiceClient{cc}
}

func (c *gameServerClustersServiceClient) ListGameServerClusters(ctx context.Context, in *ListGameServerClustersRequest, opts ...grpc.CallOption) (*ListGameServerClustersResponse, error) {
	out := new(ListGameServerClustersResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.gaming.v1beta.GameServerClustersService/ListGameServerClusters", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *gameServerClustersServiceClient) GetGameServerCluster(ctx context.Context, in *GetGameServerClusterRequest, opts ...grpc.CallOption) (*GameServerCluster, error) {
	out := new(GameServerCluster)
	err := c.cc.Invoke(ctx, "/google.cloud.gaming.v1beta.GameServerClustersService/GetGameServerCluster", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *gameServerClustersServiceClient) CreateGameServerCluster(ctx context.Context, in *CreateGameServerClusterRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.gaming.v1beta.GameServerClustersService/CreateGameServerCluster", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *gameServerClustersServiceClient) PreviewCreateGameServerCluster(ctx context.Context, in *PreviewCreateGameServerClusterRequest, opts ...grpc.CallOption) (*PreviewCreateGameServerClusterResponse, error) {
	out := new(PreviewCreateGameServerClusterResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.gaming.v1beta.GameServerClustersService/PreviewCreateGameServerCluster", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *gameServerClustersServiceClient) DeleteGameServerCluster(ctx context.Context, in *DeleteGameServerClusterRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.gaming.v1beta.GameServerClustersService/DeleteGameServerCluster", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *gameServerClustersServiceClient) PreviewDeleteGameServerCluster(ctx context.Context, in *PreviewDeleteGameServerClusterRequest, opts ...grpc.CallOption) (*PreviewDeleteGameServerClusterResponse, error) {
	out := new(PreviewDeleteGameServerClusterResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.gaming.v1beta.GameServerClustersService/PreviewDeleteGameServerCluster", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *gameServerClustersServiceClient) UpdateGameServerCluster(ctx context.Context, in *UpdateGameServerClusterRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
	out := new(longrunning.Operation)
	err := c.cc.Invoke(ctx, "/google.cloud.gaming.v1beta.GameServerClustersService/UpdateGameServerCluster", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *gameServerClustersServiceClient) PreviewUpdateGameServerCluster(ctx context.Context, in *PreviewUpdateGameServerClusterRequest, opts ...grpc.CallOption) (*PreviewUpdateGameServerClusterResponse, error) {
	out := new(PreviewUpdateGameServerClusterResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.gaming.v1beta.GameServerClustersService/PreviewUpdateGameServerCluster", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// GameServerClustersServiceServer is the server API for GameServerClustersService service.
type GameServerClustersServiceServer interface {
	// Lists Game Server Clusters in a given project and location.
	ListGameServerClusters(context.Context, *ListGameServerClustersRequest) (*ListGameServerClustersResponse, error)
	// Gets details of a single game server cluster.
	GetGameServerCluster(context.Context, *GetGameServerClusterRequest) (*GameServerCluster, error)
	// Creates a new game server cluster in a given project and location.
	CreateGameServerCluster(context.Context, *CreateGameServerClusterRequest) (*longrunning.Operation, error)
	// Previews creation of a new game server cluster in a given project and
	// location.
	PreviewCreateGameServerCluster(context.Context, *PreviewCreateGameServerClusterRequest) (*PreviewCreateGameServerClusterResponse, error)
	// Deletes a single game server cluster.
	DeleteGameServerCluster(context.Context, *DeleteGameServerClusterRequest) (*longrunning.Operation, error)
	// Previews deletion of a single game server cluster.
	PreviewDeleteGameServerCluster(context.Context, *PreviewDeleteGameServerClusterRequest) (*PreviewDeleteGameServerClusterResponse, error)
	// Patches a single game server cluster.
	UpdateGameServerCluster(context.Context, *UpdateGameServerClusterRequest) (*longrunning.Operation, error)
	// Previews updating a GameServerCluster.
	PreviewUpdateGameServerCluster(context.Context, *PreviewUpdateGameServerClusterRequest) (*PreviewUpdateGameServerClusterResponse, error)
}

// UnimplementedGameServerClustersServiceServer can be embedded to have forward compatible implementations.
type UnimplementedGameServerClustersServiceServer struct {
}

func (*UnimplementedGameServerClustersServiceServer) ListGameServerClusters(context.Context, *ListGameServerClustersRequest) (*ListGameServerClustersResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListGameServerClusters not implemented")
}
func (*UnimplementedGameServerClustersServiceServer) GetGameServerCluster(context.Context, *GetGameServerClusterRequest) (*GameServerCluster, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetGameServerCluster not implemented")
}
func (*UnimplementedGameServerClustersServiceServer) CreateGameServerCluster(context.Context, *CreateGameServerClusterRequest) (*longrunning.Operation, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateGameServerCluster not implemented")
}
func (*UnimplementedGameServerClustersServiceServer) PreviewCreateGameServerCluster(context.Context, *PreviewCreateGameServerClusterRequest) (*PreviewCreateGameServerClusterResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PreviewCreateGameServerCluster not implemented")
}
func (*UnimplementedGameServerClustersServiceServer) DeleteGameServerCluster(context.Context, *DeleteGameServerClusterRequest) (*longrunning.Operation, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteGameServerCluster not implemented")
}
func (*UnimplementedGameServerClustersServiceServer) PreviewDeleteGameServerCluster(context.Context, *PreviewDeleteGameServerClusterRequest) (*PreviewDeleteGameServerClusterResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PreviewDeleteGameServerCluster not implemented")
}
func (*UnimplementedGameServerClustersServiceServer) UpdateGameServerCluster(context.Context, *UpdateGameServerClusterRequest) (*longrunning.Operation, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdateGameServerCluster not implemented")
}
func (*UnimplementedGameServerClustersServiceServer) PreviewUpdateGameServerCluster(context.Context, *PreviewUpdateGameServerClusterRequest) (*PreviewUpdateGameServerClusterResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PreviewUpdateGameServerCluster not implemented")
}

func RegisterGameServerClustersServiceServer(s *grpc.Server, srv GameServerClustersServiceServer) {
	s.RegisterService(&_GameServerClustersService_serviceDesc, srv)
}

func _GameServerClustersService_ListGameServerClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListGameServerClustersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GameServerClustersServiceServer).ListGameServerClusters(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.gaming.v1beta.GameServerClustersService/ListGameServerClusters",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GameServerClustersServiceServer).ListGameServerClusters(ctx, req.(*ListGameServerClustersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GameServerClustersService_GetGameServerCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetGameServerClusterRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GameServerClustersServiceServer).GetGameServerCluster(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.gaming.v1beta.GameServerClustersService/GetGameServerCluster",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GameServerClustersServiceServer).GetGameServerCluster(ctx, req.(*GetGameServerClusterRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GameServerClustersService_CreateGameServerCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateGameServerClusterRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GameServerClustersServiceServer).CreateGameServerCluster(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.gaming.v1beta.GameServerClustersService/CreateGameServerCluster",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GameServerClustersServiceServer).CreateGameServerCluster(ctx, req.(*CreateGameServerClusterRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GameServerClustersService_PreviewCreateGameServerCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PreviewCreateGameServerClusterRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GameServerClustersServiceServer).PreviewCreateGameServerCluster(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.gaming.v1beta.GameServerClustersService/PreviewCreateGameServerCluster",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GameServerClustersServiceServer).PreviewCreateGameServerCluster(ctx, req.(*PreviewCreateGameServerClusterRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GameServerClustersService_DeleteGameServerCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteGameServerClusterRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GameServerClustersServiceServer).DeleteGameServerCluster(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.gaming.v1beta.GameServerClustersService/DeleteGameServerCluster",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GameServerClustersServiceServer).DeleteGameServerCluster(ctx, req.(*DeleteGameServerClusterRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GameServerClustersService_PreviewDeleteGameServerCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PreviewDeleteGameServerClusterRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GameServerClustersServiceServer).PreviewDeleteGameServerCluster(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.gaming.v1beta.GameServerClustersService/PreviewDeleteGameServerCluster",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GameServerClustersServiceServer).PreviewDeleteGameServerCluster(ctx, req.(*PreviewDeleteGameServerClusterRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GameServerClustersService_UpdateGameServerCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateGameServerClusterRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GameServerClustersServiceServer).UpdateGameServerCluster(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.gaming.v1beta.GameServerClustersService/UpdateGameServerCluster",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GameServerClustersServiceServer).UpdateGameServerCluster(ctx, req.(*UpdateGameServerClusterRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _GameServerClustersService_PreviewUpdateGameServerCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PreviewUpdateGameServerClusterRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(GameServerClustersServiceServer).PreviewUpdateGameServerCluster(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.gaming.v1beta.GameServerClustersService/PreviewUpdateGameServerCluster",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(GameServerClustersServiceServer).PreviewUpdateGameServerCluster(ctx, req.(*PreviewUpdateGameServerClusterRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _GameServerClustersService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "google.cloud.gaming.v1beta.GameServerClustersService",
	HandlerType: (*GameServerClustersServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "ListGameServerClusters",
			Handler:    _GameServerClustersService_ListGameServerClusters_Handler,
		},
		{
			MethodName: "GetGameServerCluster",
			Handler:    _GameServerClustersService_GetGameServerCluster_Handler,
		},
		{
			MethodName: "CreateGameServerCluster",
			Handler:    _GameServerClustersService_CreateGameServerCluster_Handler,
		},
		{
			MethodName: "PreviewCreateGameServerCluster",
			Handler:    _GameServerClustersService_PreviewCreateGameServerCluster_Handler,
		},
		{
			MethodName: "DeleteGameServerCluster",
			Handler:    _GameServerClustersService_DeleteGameServerCluster_Handler,
		},
		{
			MethodName: "PreviewDeleteGameServerCluster",
			Handler:    _GameServerClustersService_PreviewDeleteGameServerCluster_Handler,
		},
		{
			MethodName: "UpdateGameServerCluster",
			Handler:    _GameServerClustersService_UpdateGameServerCluster_Handler,
		},
		{
			MethodName: "PreviewUpdateGameServerCluster",
			Handler:    _GameServerClustersService_PreviewUpdateGameServerCluster_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "google/cloud/gaming/v1beta/game_server_clusters_service.proto",
}
