github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/go-control-plane/envoy/service/health/v3/hds.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // versions:
     3  // 	protoc-gen-go v1.25.0
     4  // 	protoc        v3.16.0
     5  // source: envoy/service/health/v3/hds.proto
     6  
     7  package envoy_service_health_v3
     8  
     9  import (
    10  	context "context"
    11  	_ "github.com/cncf/xds/go/udpa/annotations"
    12  	_ "github.com/hxx258456/ccgo/go-control-plane/envoy/annotations"
    13  	v32 "github.com/hxx258456/ccgo/go-control-plane/envoy/config/cluster/v3"
    14  	v3 "github.com/hxx258456/ccgo/go-control-plane/envoy/config/core/v3"
    15  	v31 "github.com/hxx258456/ccgo/go-control-plane/envoy/config/endpoint/v3"
    16  	proto "github.com/golang/protobuf/proto"
    17  	duration "github.com/golang/protobuf/ptypes/duration"
    18  	_ "google.golang.org/genproto/googleapis/api/annotations"
    19  	grpc "github.com/hxx258456/ccgo/grpc"
    20  	codes "github.com/hxx258456/ccgo/grpc/codes"
    21  	status "github.com/hxx258456/ccgo/grpc/status"
    22  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    23  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    24  	reflect "reflect"
    25  	sync "sync"
    26  )
    27  
    28  const (
    29  	// Verify that this generated code is sufficiently up-to-date.
    30  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    31  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    32  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    33  )
    34  
    35  // This is a compile-time assertion that a sufficiently up-to-date version
    36  // of the legacy proto package is being used.
    37  const _ = proto.ProtoPackageIsVersion4
    38  
    39  // Different Envoy instances may have different capabilities (e.g. Redis)
    40  // and/or have ports enabled for different protocols.
    41  type Capability_Protocol int32
    42  
    43  const (
    44  	Capability_HTTP  Capability_Protocol = 0
    45  	Capability_TCP   Capability_Protocol = 1
    46  	Capability_REDIS Capability_Protocol = 2
    47  )
    48  
    49  // Enum value maps for Capability_Protocol.
    50  var (
    51  	Capability_Protocol_name = map[int32]string{
    52  		0: "HTTP",
    53  		1: "TCP",
    54  		2: "REDIS",
    55  	}
    56  	Capability_Protocol_value = map[string]int32{
    57  		"HTTP":  0,
    58  		"TCP":   1,
    59  		"REDIS": 2,
    60  	}
    61  )
    62  
    63  func (x Capability_Protocol) Enum() *Capability_Protocol {
    64  	p := new(Capability_Protocol)
    65  	*p = x
    66  	return p
    67  }
    68  
    69  func (x Capability_Protocol) String() string {
    70  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    71  }
    72  
    73  func (Capability_Protocol) Descriptor() protoreflect.EnumDescriptor {
    74  	return file_envoy_service_health_v3_hds_proto_enumTypes[0].Descriptor()
    75  }
    76  
    77  func (Capability_Protocol) Type() protoreflect.EnumType {
    78  	return &file_envoy_service_health_v3_hds_proto_enumTypes[0]
    79  }
    80  
    81  func (x Capability_Protocol) Number() protoreflect.EnumNumber {
    82  	return protoreflect.EnumNumber(x)
    83  }
    84  
    85  // Deprecated: Use Capability_Protocol.Descriptor instead.
    86  func (Capability_Protocol) EnumDescriptor() ([]byte, []int) {
    87  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{0, 0}
    88  }
    89  
    90  // Defines supported protocols etc, so the management server can assign proper
    91  // endpoints to healthcheck.
    92  type Capability struct {
    93  	state         protoimpl.MessageState
    94  	sizeCache     protoimpl.SizeCache
    95  	unknownFields protoimpl.UnknownFields
    96  
    97  	HealthCheckProtocols []Capability_Protocol `protobuf:"varint,1,rep,packed,name=health_check_protocols,json=healthCheckProtocols,proto3,enum=envoy.service.health.v3.Capability_Protocol" json:"health_check_protocols,omitempty"`
    98  }
    99  
   100  func (x *Capability) Reset() {
   101  	*x = Capability{}
   102  	if protoimpl.UnsafeEnabled {
   103  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[0]
   104  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   105  		ms.StoreMessageInfo(mi)
   106  	}
   107  }
   108  
   109  func (x *Capability) String() string {
   110  	return protoimpl.X.MessageStringOf(x)
   111  }
   112  
   113  func (*Capability) ProtoMessage() {}
   114  
   115  func (x *Capability) ProtoReflect() protoreflect.Message {
   116  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[0]
   117  	if protoimpl.UnsafeEnabled && x != nil {
   118  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   119  		if ms.LoadMessageInfo() == nil {
   120  			ms.StoreMessageInfo(mi)
   121  		}
   122  		return ms
   123  	}
   124  	return mi.MessageOf(x)
   125  }
   126  
   127  // Deprecated: Use Capability.ProtoReflect.Descriptor instead.
   128  func (*Capability) Descriptor() ([]byte, []int) {
   129  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{0}
   130  }
   131  
   132  func (x *Capability) GetHealthCheckProtocols() []Capability_Protocol {
   133  	if x != nil {
   134  		return x.HealthCheckProtocols
   135  	}
   136  	return nil
   137  }
   138  
   139  type HealthCheckRequest struct {
   140  	state         protoimpl.MessageState
   141  	sizeCache     protoimpl.SizeCache
   142  	unknownFields protoimpl.UnknownFields
   143  
   144  	Node       *v3.Node    `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
   145  	Capability *Capability `protobuf:"bytes,2,opt,name=capability,proto3" json:"capability,omitempty"`
   146  }
   147  
   148  func (x *HealthCheckRequest) Reset() {
   149  	*x = HealthCheckRequest{}
   150  	if protoimpl.UnsafeEnabled {
   151  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[1]
   152  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   153  		ms.StoreMessageInfo(mi)
   154  	}
   155  }
   156  
   157  func (x *HealthCheckRequest) String() string {
   158  	return protoimpl.X.MessageStringOf(x)
   159  }
   160  
   161  func (*HealthCheckRequest) ProtoMessage() {}
   162  
   163  func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message {
   164  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[1]
   165  	if protoimpl.UnsafeEnabled && x != nil {
   166  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   167  		if ms.LoadMessageInfo() == nil {
   168  			ms.StoreMessageInfo(mi)
   169  		}
   170  		return ms
   171  	}
   172  	return mi.MessageOf(x)
   173  }
   174  
   175  // Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead.
   176  func (*HealthCheckRequest) Descriptor() ([]byte, []int) {
   177  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{1}
   178  }
   179  
   180  func (x *HealthCheckRequest) GetNode() *v3.Node {
   181  	if x != nil {
   182  		return x.Node
   183  	}
   184  	return nil
   185  }
   186  
   187  func (x *HealthCheckRequest) GetCapability() *Capability {
   188  	if x != nil {
   189  		return x.Capability
   190  	}
   191  	return nil
   192  }
   193  
   194  type EndpointHealth struct {
   195  	state         protoimpl.MessageState
   196  	sizeCache     protoimpl.SizeCache
   197  	unknownFields protoimpl.UnknownFields
   198  
   199  	Endpoint     *v31.Endpoint   `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
   200  	HealthStatus v3.HealthStatus `protobuf:"varint,2,opt,name=health_status,json=healthStatus,proto3,enum=envoy.config.core.v3.HealthStatus" json:"health_status,omitempty"`
   201  }
   202  
   203  func (x *EndpointHealth) Reset() {
   204  	*x = EndpointHealth{}
   205  	if protoimpl.UnsafeEnabled {
   206  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[2]
   207  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   208  		ms.StoreMessageInfo(mi)
   209  	}
   210  }
   211  
   212  func (x *EndpointHealth) String() string {
   213  	return protoimpl.X.MessageStringOf(x)
   214  }
   215  
   216  func (*EndpointHealth) ProtoMessage() {}
   217  
   218  func (x *EndpointHealth) ProtoReflect() protoreflect.Message {
   219  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[2]
   220  	if protoimpl.UnsafeEnabled && x != nil {
   221  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   222  		if ms.LoadMessageInfo() == nil {
   223  			ms.StoreMessageInfo(mi)
   224  		}
   225  		return ms
   226  	}
   227  	return mi.MessageOf(x)
   228  }
   229  
   230  // Deprecated: Use EndpointHealth.ProtoReflect.Descriptor instead.
   231  func (*EndpointHealth) Descriptor() ([]byte, []int) {
   232  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{2}
   233  }
   234  
   235  func (x *EndpointHealth) GetEndpoint() *v31.Endpoint {
   236  	if x != nil {
   237  		return x.Endpoint
   238  	}
   239  	return nil
   240  }
   241  
   242  func (x *EndpointHealth) GetHealthStatus() v3.HealthStatus {
   243  	if x != nil {
   244  		return x.HealthStatus
   245  	}
   246  	return v3.HealthStatus_UNKNOWN
   247  }
   248  
   249  // Group endpoint health by locality under each cluster.
   250  type LocalityEndpointsHealth struct {
   251  	state         protoimpl.MessageState
   252  	sizeCache     protoimpl.SizeCache
   253  	unknownFields protoimpl.UnknownFields
   254  
   255  	Locality        *v3.Locality      `protobuf:"bytes,1,opt,name=locality,proto3" json:"locality,omitempty"`
   256  	EndpointsHealth []*EndpointHealth `protobuf:"bytes,2,rep,name=endpoints_health,json=endpointsHealth,proto3" json:"endpoints_health,omitempty"`
   257  }
   258  
   259  func (x *LocalityEndpointsHealth) Reset() {
   260  	*x = LocalityEndpointsHealth{}
   261  	if protoimpl.UnsafeEnabled {
   262  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[3]
   263  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   264  		ms.StoreMessageInfo(mi)
   265  	}
   266  }
   267  
   268  func (x *LocalityEndpointsHealth) String() string {
   269  	return protoimpl.X.MessageStringOf(x)
   270  }
   271  
   272  func (*LocalityEndpointsHealth) ProtoMessage() {}
   273  
   274  func (x *LocalityEndpointsHealth) ProtoReflect() protoreflect.Message {
   275  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[3]
   276  	if protoimpl.UnsafeEnabled && x != nil {
   277  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   278  		if ms.LoadMessageInfo() == nil {
   279  			ms.StoreMessageInfo(mi)
   280  		}
   281  		return ms
   282  	}
   283  	return mi.MessageOf(x)
   284  }
   285  
   286  // Deprecated: Use LocalityEndpointsHealth.ProtoReflect.Descriptor instead.
   287  func (*LocalityEndpointsHealth) Descriptor() ([]byte, []int) {
   288  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{3}
   289  }
   290  
   291  func (x *LocalityEndpointsHealth) GetLocality() *v3.Locality {
   292  	if x != nil {
   293  		return x.Locality
   294  	}
   295  	return nil
   296  }
   297  
   298  func (x *LocalityEndpointsHealth) GetEndpointsHealth() []*EndpointHealth {
   299  	if x != nil {
   300  		return x.EndpointsHealth
   301  	}
   302  	return nil
   303  }
   304  
   305  // The health status of endpoints in a cluster. The cluster name and locality
   306  // should match the corresponding fields in ClusterHealthCheck message.
   307  type ClusterEndpointsHealth struct {
   308  	state         protoimpl.MessageState
   309  	sizeCache     protoimpl.SizeCache
   310  	unknownFields protoimpl.UnknownFields
   311  
   312  	ClusterName             string                     `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
   313  	LocalityEndpointsHealth []*LocalityEndpointsHealth `protobuf:"bytes,2,rep,name=locality_endpoints_health,json=localityEndpointsHealth,proto3" json:"locality_endpoints_health,omitempty"`
   314  }
   315  
   316  func (x *ClusterEndpointsHealth) Reset() {
   317  	*x = ClusterEndpointsHealth{}
   318  	if protoimpl.UnsafeEnabled {
   319  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[4]
   320  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   321  		ms.StoreMessageInfo(mi)
   322  	}
   323  }
   324  
   325  func (x *ClusterEndpointsHealth) String() string {
   326  	return protoimpl.X.MessageStringOf(x)
   327  }
   328  
   329  func (*ClusterEndpointsHealth) ProtoMessage() {}
   330  
   331  func (x *ClusterEndpointsHealth) ProtoReflect() protoreflect.Message {
   332  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[4]
   333  	if protoimpl.UnsafeEnabled && x != nil {
   334  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   335  		if ms.LoadMessageInfo() == nil {
   336  			ms.StoreMessageInfo(mi)
   337  		}
   338  		return ms
   339  	}
   340  	return mi.MessageOf(x)
   341  }
   342  
   343  // Deprecated: Use ClusterEndpointsHealth.ProtoReflect.Descriptor instead.
   344  func (*ClusterEndpointsHealth) Descriptor() ([]byte, []int) {
   345  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{4}
   346  }
   347  
   348  func (x *ClusterEndpointsHealth) GetClusterName() string {
   349  	if x != nil {
   350  		return x.ClusterName
   351  	}
   352  	return ""
   353  }
   354  
   355  func (x *ClusterEndpointsHealth) GetLocalityEndpointsHealth() []*LocalityEndpointsHealth {
   356  	if x != nil {
   357  		return x.LocalityEndpointsHealth
   358  	}
   359  	return nil
   360  }
   361  
   362  type EndpointHealthResponse struct {
   363  	state         protoimpl.MessageState
   364  	sizeCache     protoimpl.SizeCache
   365  	unknownFields protoimpl.UnknownFields
   366  
   367  	// Deprecated - Flat list of endpoint health information.
   368  	//
   369  	// Deprecated: Do not use.
   370  	EndpointsHealth []*EndpointHealth `protobuf:"bytes,1,rep,name=endpoints_health,json=endpointsHealth,proto3" json:"endpoints_health,omitempty"`
   371  	// Organize Endpoint health information by cluster.
   372  	ClusterEndpointsHealth []*ClusterEndpointsHealth `protobuf:"bytes,2,rep,name=cluster_endpoints_health,json=clusterEndpointsHealth,proto3" json:"cluster_endpoints_health,omitempty"`
   373  }
   374  
   375  func (x *EndpointHealthResponse) Reset() {
   376  	*x = EndpointHealthResponse{}
   377  	if protoimpl.UnsafeEnabled {
   378  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[5]
   379  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   380  		ms.StoreMessageInfo(mi)
   381  	}
   382  }
   383  
   384  func (x *EndpointHealthResponse) String() string {
   385  	return protoimpl.X.MessageStringOf(x)
   386  }
   387  
   388  func (*EndpointHealthResponse) ProtoMessage() {}
   389  
   390  func (x *EndpointHealthResponse) ProtoReflect() protoreflect.Message {
   391  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[5]
   392  	if protoimpl.UnsafeEnabled && x != nil {
   393  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   394  		if ms.LoadMessageInfo() == nil {
   395  			ms.StoreMessageInfo(mi)
   396  		}
   397  		return ms
   398  	}
   399  	return mi.MessageOf(x)
   400  }
   401  
   402  // Deprecated: Use EndpointHealthResponse.ProtoReflect.Descriptor instead.
   403  func (*EndpointHealthResponse) Descriptor() ([]byte, []int) {
   404  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{5}
   405  }
   406  
   407  // Deprecated: Do not use.
   408  func (x *EndpointHealthResponse) GetEndpointsHealth() []*EndpointHealth {
   409  	if x != nil {
   410  		return x.EndpointsHealth
   411  	}
   412  	return nil
   413  }
   414  
   415  func (x *EndpointHealthResponse) GetClusterEndpointsHealth() []*ClusterEndpointsHealth {
   416  	if x != nil {
   417  		return x.ClusterEndpointsHealth
   418  	}
   419  	return nil
   420  }
   421  
   422  type HealthCheckRequestOrEndpointHealthResponse struct {
   423  	state         protoimpl.MessageState
   424  	sizeCache     protoimpl.SizeCache
   425  	unknownFields protoimpl.UnknownFields
   426  
   427  	// Types that are assignable to RequestType:
   428  	//	*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest
   429  	//	*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse
   430  	RequestType isHealthCheckRequestOrEndpointHealthResponse_RequestType `protobuf_oneof:"request_type"`
   431  }
   432  
   433  func (x *HealthCheckRequestOrEndpointHealthResponse) Reset() {
   434  	*x = HealthCheckRequestOrEndpointHealthResponse{}
   435  	if protoimpl.UnsafeEnabled {
   436  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[6]
   437  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   438  		ms.StoreMessageInfo(mi)
   439  	}
   440  }
   441  
   442  func (x *HealthCheckRequestOrEndpointHealthResponse) String() string {
   443  	return protoimpl.X.MessageStringOf(x)
   444  }
   445  
   446  func (*HealthCheckRequestOrEndpointHealthResponse) ProtoMessage() {}
   447  
   448  func (x *HealthCheckRequestOrEndpointHealthResponse) ProtoReflect() protoreflect.Message {
   449  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[6]
   450  	if protoimpl.UnsafeEnabled && x != nil {
   451  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   452  		if ms.LoadMessageInfo() == nil {
   453  			ms.StoreMessageInfo(mi)
   454  		}
   455  		return ms
   456  	}
   457  	return mi.MessageOf(x)
   458  }
   459  
   460  // Deprecated: Use HealthCheckRequestOrEndpointHealthResponse.ProtoReflect.Descriptor instead.
   461  func (*HealthCheckRequestOrEndpointHealthResponse) Descriptor() ([]byte, []int) {
   462  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{6}
   463  }
   464  
   465  func (m *HealthCheckRequestOrEndpointHealthResponse) GetRequestType() isHealthCheckRequestOrEndpointHealthResponse_RequestType {
   466  	if m != nil {
   467  		return m.RequestType
   468  	}
   469  	return nil
   470  }
   471  
   472  func (x *HealthCheckRequestOrEndpointHealthResponse) GetHealthCheckRequest() *HealthCheckRequest {
   473  	if x, ok := x.GetRequestType().(*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest); ok {
   474  		return x.HealthCheckRequest
   475  	}
   476  	return nil
   477  }
   478  
   479  func (x *HealthCheckRequestOrEndpointHealthResponse) GetEndpointHealthResponse() *EndpointHealthResponse {
   480  	if x, ok := x.GetRequestType().(*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse); ok {
   481  		return x.EndpointHealthResponse
   482  	}
   483  	return nil
   484  }
   485  
   486  type isHealthCheckRequestOrEndpointHealthResponse_RequestType interface {
   487  	isHealthCheckRequestOrEndpointHealthResponse_RequestType()
   488  }
   489  
   490  type HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest struct {
   491  	HealthCheckRequest *HealthCheckRequest `protobuf:"bytes,1,opt,name=health_check_request,json=healthCheckRequest,proto3,oneof"`
   492  }
   493  
   494  type HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse struct {
   495  	EndpointHealthResponse *EndpointHealthResponse `protobuf:"bytes,2,opt,name=endpoint_health_response,json=endpointHealthResponse,proto3,oneof"`
   496  }
   497  
   498  func (*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest) isHealthCheckRequestOrEndpointHealthResponse_RequestType() {
   499  }
   500  
   501  func (*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse) isHealthCheckRequestOrEndpointHealthResponse_RequestType() {
   502  }
   503  
   504  type LocalityEndpoints struct {
   505  	state         protoimpl.MessageState
   506  	sizeCache     protoimpl.SizeCache
   507  	unknownFields protoimpl.UnknownFields
   508  
   509  	Locality  *v3.Locality    `protobuf:"bytes,1,opt,name=locality,proto3" json:"locality,omitempty"`
   510  	Endpoints []*v31.Endpoint `protobuf:"bytes,2,rep,name=endpoints,proto3" json:"endpoints,omitempty"`
   511  }
   512  
   513  func (x *LocalityEndpoints) Reset() {
   514  	*x = LocalityEndpoints{}
   515  	if protoimpl.UnsafeEnabled {
   516  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[7]
   517  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   518  		ms.StoreMessageInfo(mi)
   519  	}
   520  }
   521  
   522  func (x *LocalityEndpoints) String() string {
   523  	return protoimpl.X.MessageStringOf(x)
   524  }
   525  
   526  func (*LocalityEndpoints) ProtoMessage() {}
   527  
   528  func (x *LocalityEndpoints) ProtoReflect() protoreflect.Message {
   529  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[7]
   530  	if protoimpl.UnsafeEnabled && x != nil {
   531  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   532  		if ms.LoadMessageInfo() == nil {
   533  			ms.StoreMessageInfo(mi)
   534  		}
   535  		return ms
   536  	}
   537  	return mi.MessageOf(x)
   538  }
   539  
   540  // Deprecated: Use LocalityEndpoints.ProtoReflect.Descriptor instead.
   541  func (*LocalityEndpoints) Descriptor() ([]byte, []int) {
   542  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{7}
   543  }
   544  
   545  func (x *LocalityEndpoints) GetLocality() *v3.Locality {
   546  	if x != nil {
   547  		return x.Locality
   548  	}
   549  	return nil
   550  }
   551  
   552  func (x *LocalityEndpoints) GetEndpoints() []*v31.Endpoint {
   553  	if x != nil {
   554  		return x.Endpoints
   555  	}
   556  	return nil
   557  }
   558  
   559  // The cluster name and locality is provided to Envoy for the endpoints that it
   560  // health checks to support statistics reporting, logging and debugging by the
   561  // Envoy instance (outside of HDS). For maximum usefulness, it should match the
   562  // same cluster structure as that provided by EDS.
   563  type ClusterHealthCheck struct {
   564  	state         protoimpl.MessageState
   565  	sizeCache     protoimpl.SizeCache
   566  	unknownFields protoimpl.UnknownFields
   567  
   568  	ClusterName       string               `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
   569  	HealthChecks      []*v3.HealthCheck    `protobuf:"bytes,2,rep,name=health_checks,json=healthChecks,proto3" json:"health_checks,omitempty"`
   570  	LocalityEndpoints []*LocalityEndpoints `protobuf:"bytes,3,rep,name=locality_endpoints,json=localityEndpoints,proto3" json:"locality_endpoints,omitempty"`
   571  	// Optional map that gets filtered by :ref:`health_checks.transport_socket_match_criteria <envoy_v3_api_field_config.core.v3.HealthCheck.transport_socket_match_criteria>`
   572  	// on connection when health checking. For more details, see
   573  	// :ref:`config.cluster.v3.Cluster.transport_socket_matches <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket_matches>`.
   574  	TransportSocketMatches []*v32.Cluster_TransportSocketMatch `protobuf:"bytes,4,rep,name=transport_socket_matches,json=transportSocketMatches,proto3" json:"transport_socket_matches,omitempty"`
   575  }
   576  
   577  func (x *ClusterHealthCheck) Reset() {
   578  	*x = ClusterHealthCheck{}
   579  	if protoimpl.UnsafeEnabled {
   580  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[8]
   581  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   582  		ms.StoreMessageInfo(mi)
   583  	}
   584  }
   585  
   586  func (x *ClusterHealthCheck) String() string {
   587  	return protoimpl.X.MessageStringOf(x)
   588  }
   589  
   590  func (*ClusterHealthCheck) ProtoMessage() {}
   591  
   592  func (x *ClusterHealthCheck) ProtoReflect() protoreflect.Message {
   593  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[8]
   594  	if protoimpl.UnsafeEnabled && x != nil {
   595  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   596  		if ms.LoadMessageInfo() == nil {
   597  			ms.StoreMessageInfo(mi)
   598  		}
   599  		return ms
   600  	}
   601  	return mi.MessageOf(x)
   602  }
   603  
   604  // Deprecated: Use ClusterHealthCheck.ProtoReflect.Descriptor instead.
   605  func (*ClusterHealthCheck) Descriptor() ([]byte, []int) {
   606  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{8}
   607  }
   608  
   609  func (x *ClusterHealthCheck) GetClusterName() string {
   610  	if x != nil {
   611  		return x.ClusterName
   612  	}
   613  	return ""
   614  }
   615  
   616  func (x *ClusterHealthCheck) GetHealthChecks() []*v3.HealthCheck {
   617  	if x != nil {
   618  		return x.HealthChecks
   619  	}
   620  	return nil
   621  }
   622  
   623  func (x *ClusterHealthCheck) GetLocalityEndpoints() []*LocalityEndpoints {
   624  	if x != nil {
   625  		return x.LocalityEndpoints
   626  	}
   627  	return nil
   628  }
   629  
   630  func (x *ClusterHealthCheck) GetTransportSocketMatches() []*v32.Cluster_TransportSocketMatch {
   631  	if x != nil {
   632  		return x.TransportSocketMatches
   633  	}
   634  	return nil
   635  }
   636  
   637  type HealthCheckSpecifier struct {
   638  	state         protoimpl.MessageState
   639  	sizeCache     protoimpl.SizeCache
   640  	unknownFields protoimpl.UnknownFields
   641  
   642  	ClusterHealthChecks []*ClusterHealthCheck `protobuf:"bytes,1,rep,name=cluster_health_checks,json=clusterHealthChecks,proto3" json:"cluster_health_checks,omitempty"`
   643  	// The default is 1 second.
   644  	Interval *duration.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"`
   645  }
   646  
   647  func (x *HealthCheckSpecifier) Reset() {
   648  	*x = HealthCheckSpecifier{}
   649  	if protoimpl.UnsafeEnabled {
   650  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[9]
   651  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   652  		ms.StoreMessageInfo(mi)
   653  	}
   654  }
   655  
   656  func (x *HealthCheckSpecifier) String() string {
   657  	return protoimpl.X.MessageStringOf(x)
   658  }
   659  
   660  func (*HealthCheckSpecifier) ProtoMessage() {}
   661  
   662  func (x *HealthCheckSpecifier) ProtoReflect() protoreflect.Message {
   663  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[9]
   664  	if protoimpl.UnsafeEnabled && x != nil {
   665  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   666  		if ms.LoadMessageInfo() == nil {
   667  			ms.StoreMessageInfo(mi)
   668  		}
   669  		return ms
   670  	}
   671  	return mi.MessageOf(x)
   672  }
   673  
   674  // Deprecated: Use HealthCheckSpecifier.ProtoReflect.Descriptor instead.
   675  func (*HealthCheckSpecifier) Descriptor() ([]byte, []int) {
   676  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{9}
   677  }
   678  
   679  func (x *HealthCheckSpecifier) GetClusterHealthChecks() []*ClusterHealthCheck {
   680  	if x != nil {
   681  		return x.ClusterHealthChecks
   682  	}
   683  	return nil
   684  }
   685  
   686  func (x *HealthCheckSpecifier) GetInterval() *duration.Duration {
   687  	if x != nil {
   688  		return x.Interval
   689  	}
   690  	return nil
   691  }
   692  
   693  // [#not-implemented-hide:] Not configuration. Workaround c++ protobuf issue with importing
   694  // services: https://github.com/google/protobuf/issues/4221 and protoxform to upgrade the file.
   695  type HdsDummy struct {
   696  	state         protoimpl.MessageState
   697  	sizeCache     protoimpl.SizeCache
   698  	unknownFields protoimpl.UnknownFields
   699  }
   700  
   701  func (x *HdsDummy) Reset() {
   702  	*x = HdsDummy{}
   703  	if protoimpl.UnsafeEnabled {
   704  		mi := &file_envoy_service_health_v3_hds_proto_msgTypes[10]
   705  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   706  		ms.StoreMessageInfo(mi)
   707  	}
   708  }
   709  
   710  func (x *HdsDummy) String() string {
   711  	return protoimpl.X.MessageStringOf(x)
   712  }
   713  
   714  func (*HdsDummy) ProtoMessage() {}
   715  
   716  func (x *HdsDummy) ProtoReflect() protoreflect.Message {
   717  	mi := &file_envoy_service_health_v3_hds_proto_msgTypes[10]
   718  	if protoimpl.UnsafeEnabled && x != nil {
   719  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   720  		if ms.LoadMessageInfo() == nil {
   721  			ms.StoreMessageInfo(mi)
   722  		}
   723  		return ms
   724  	}
   725  	return mi.MessageOf(x)
   726  }
   727  
   728  // Deprecated: Use HdsDummy.ProtoReflect.Descriptor instead.
   729  func (*HdsDummy) Descriptor() ([]byte, []int) {
   730  	return file_envoy_service_health_v3_hds_proto_rawDescGZIP(), []int{10}
   731  }
   732  
   733  var File_envoy_service_health_v3_hds_proto protoreflect.FileDescriptor
   734  
   735  var file_envoy_service_health_v3_hds_proto_rawDesc = []byte{
   736  	0x0a, 0x21, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f,
   737  	0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x68, 0x64, 0x73, 0x2e, 0x70, 0x72,
   738  	0x6f, 0x74, 0x6f, 0x12, 0x17, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
   739  	0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x1a, 0x25, 0x65, 0x6e,
   740  	0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74,
   741  	0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72,
   742  	0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
   743  	0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70,
   744  	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66,
   745  	0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74,
   746  	0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x32, 0x65,
   747  	0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x65, 0x6e, 0x64, 0x70,
   748  	0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x33, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
   749  	0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
   750  	0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,
   751  	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
   752  	0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
   753  	0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
   754  	0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
   755  	0x6e, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70,
   756  	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
   757  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72,
   758  	0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
   759  	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67,
   760  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc8, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x70, 0x61, 0x62,
   761  	0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x62, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f,
   762  	0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18,
   763  	0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65,
   764  	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x2e,
   765  	0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f,
   766  	0x63, 0x6f, 0x6c, 0x52, 0x14, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b,
   767  	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0x28, 0x0a, 0x08, 0x50, 0x72, 0x6f,
   768  	0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 0x12,
   769  	0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x44, 0x49,
   770  	0x53, 0x10, 0x02, 0x3a, 0x2c, 0x9a, 0xc5, 0x88, 0x1e, 0x27, 0x0a, 0x25, 0x65, 0x6e, 0x76, 0x6f,
   771  	0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76,
   772  	0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
   773  	0x79, 0x22, 0xbf, 0x01, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63,
   774  	0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65,
   775  	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63,
   776  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f,
   777  	0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x61, 0x70, 0x61,
   778  	0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65,
   779  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61,
   780  	0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
   781  	0x79, 0x52, 0x0a, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x34, 0x9a,
   782  	0xc5, 0x88, 0x1e, 0x2f, 0x0a, 0x2d, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76,
   783  	0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32,
   784  	0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
   785  	0x65, 0x73, 0x74, 0x22, 0xcb, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
   786  	0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x3e, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69,
   787  	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79,
   788  	0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
   789  	0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x6e,
   790  	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68,
   791  	0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e,
   792  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72,
   793  	0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75,
   794  	0x73, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a,
   795  	0x30, 0x9a, 0xc5, 0x88, 0x1e, 0x2b, 0x0a, 0x29, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65,
   796  	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e,
   797  	0x76, 0x32, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74,
   798  	0x68, 0x22, 0xa9, 0x01, 0x0a, 0x17, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e,
   799  	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x3a, 0x0a,
   800  	0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
   801  	0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63,
   802  	0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52,
   803  	0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x10, 0x65, 0x6e, 0x64,
   804  	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x02, 0x20,
   805  	0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76,
   806  	0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e,
   807  	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x0f, 0x65, 0x6e,
   808  	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0xa9, 0x01,
   809  	0x0a, 0x16, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
   810  	0x74, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73,
   811  	0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
   812  	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x19, 0x6c,
   813  	0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
   814  	0x73, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30,
   815  	0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68,
   816  	0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74,
   817  	0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
   818  	0x52, 0x17, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69,
   819  	0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x9e, 0x02, 0x0a, 0x16, 0x45, 0x6e,
   820  	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70,
   821  	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
   822  	0x73, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
   823  	0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68,
   824  	0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
   825  	0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04,
   826  	0x03, 0x33, 0x2e, 0x30, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x48,
   827  	0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x69, 0x0a, 0x18, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
   828  	0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74,
   829  	0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
   830  	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76,
   831  	0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
   832  	0x74, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x16, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
   833  	0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
   834  	0x3a, 0x38, 0x9a, 0xc5, 0x88, 0x1e, 0x33, 0x0a, 0x31, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73,
   835  	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
   836  	0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c,
   837  	0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd8, 0x02, 0x0a, 0x2a, 0x48,
   838  	0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
   839  	0x74, 0x4f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74,
   840  	0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x14, 0x68, 0x65, 0x61,
   841  	0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
   842  	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
   843  	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76,
   844  	0x33, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71,
   845  	0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68,
   846  	0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6b, 0x0a, 0x18, 0x65, 0x6e,
   847  	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x72, 0x65,
   848  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65,
   849  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61,
   850  	0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48,
   851  	0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52,
   852  	0x16, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52,
   853  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x4c, 0x9a, 0xc5, 0x88, 0x1e, 0x47, 0x0a, 0x45,
   854  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69,
   855  	0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74,
   856  	0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x72, 0x45,
   857  	0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73,
   858  	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
   859  	0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x11, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69,
   860  	0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x08, 0x6c,
   861  	0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
   862  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72,
   863  	0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x08, 0x6c,
   864  	0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f,
   865  	0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76,
   866  	0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69,
   867  	0x6e, 0x74, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09,
   868  	0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x3a, 0x33, 0x9a, 0xc5, 0x88, 0x1e, 0x2e,
   869  	0x0a, 0x2c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
   870  	0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x63,
   871  	0x61, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x81,
   872  	0x03, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
   873  	0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
   874  	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75,
   875  	0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c,
   876  	0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
   877  	0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63,
   878  	0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
   879  	0x63, 0x6b, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73,
   880  	0x12, 0x59, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x64,
   881  	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65,
   882  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61,
   883  	0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x45,
   884  	0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69,
   885  	0x74, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x6f, 0x0a, 0x18, 0x74,
   886  	0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f,
   887  	0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e,
   888  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75,
   889  	0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
   890  	0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4d,
   891  	0x61, 0x74, 0x63, 0x68, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53,
   892  	0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x3a, 0x34, 0x9a, 0xc5,
   893  	0x88, 0x1e, 0x2f, 0x0a, 0x2d, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
   894  	0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e,
   895  	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
   896  	0x63, 0x6b, 0x22, 0xe6, 0x01, 0x0a, 0x14, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
   897  	0x63, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x5f, 0x0a, 0x15, 0x63,
   898  	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68,
   899  	0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x76,
   900  	0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74,
   901  	0x68, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c,
   902  	0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
   903  	0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x35, 0x0a, 0x08,
   904  	0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
   905  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
   906  	0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72,
   907  	0x76, 0x61, 0x6c, 0x3a, 0x36, 0x9a, 0xc5, 0x88, 0x1e, 0x31, 0x0a, 0x2f, 0x65, 0x6e, 0x76, 0x6f,
   908  	0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76,
   909  	0x65, 0x72, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
   910  	0x63, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x0a, 0x0a, 0x08, 0x48,
   911  	0x64, 0x73, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x32, 0xde, 0x02, 0x0a, 0x16, 0x48, 0x65, 0x61, 0x6c,
   912  	0x74, 0x68, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69,
   913  	0x63, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x61,
   914  	0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x43, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79,
   915  	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e,
   916  	0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65,
   917  	0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48,
   918  	0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x2d, 0x2e,
   919  	0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65,
   920  	0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68,
   921  	0x65, 0x63, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x00, 0x28, 0x01,
   922  	0x30, 0x01, 0x12, 0xb3, 0x01, 0x0a, 0x10, 0x46, 0x65, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x6c,
   923  	0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x43, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
   924  	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76,
   925  	0x33, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71,
   926  	0x75, 0x65, 0x73, 0x74, 0x4f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65,
   927  	0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x2d, 0x2e, 0x65,
   928  	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61,
   929  	0x6c, 0x74, 0x68, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
   930  	0x63, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x2b, 0x82, 0xd3, 0xe4,
   931  	0x93, 0x02, 0x1c, 0x22, 0x1a, 0x2f, 0x76, 0x33, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
   932  	0x72, 0x79, 0x3a, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x82,
   933  	0xd3, 0xe4, 0x93, 0x02, 0x03, 0x3a, 0x01, 0x2a, 0x42, 0x3e, 0x0a, 0x25, 0x69, 0x6f, 0x2e, 0x65,
   934  	0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e,
   935  	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76,
   936  	0x33, 0x42, 0x08, 0x48, 0x64, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x88, 0x01, 0x01,
   937  	0xba, 0x80, 0xc8, 0xd1, 0x06, 0x02, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
   938  }
   939  
   940  var (
   941  	file_envoy_service_health_v3_hds_proto_rawDescOnce sync.Once
   942  	file_envoy_service_health_v3_hds_proto_rawDescData = file_envoy_service_health_v3_hds_proto_rawDesc
   943  )
   944  
   945  func file_envoy_service_health_v3_hds_proto_rawDescGZIP() []byte {
   946  	file_envoy_service_health_v3_hds_proto_rawDescOnce.Do(func() {
   947  		file_envoy_service_health_v3_hds_proto_rawDescData = protoimpl.X.CompressGZIP(file_envoy_service_health_v3_hds_proto_rawDescData)
   948  	})
   949  	return file_envoy_service_health_v3_hds_proto_rawDescData
   950  }
   951  
   952  var file_envoy_service_health_v3_hds_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
   953  var file_envoy_service_health_v3_hds_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
   954  var file_envoy_service_health_v3_hds_proto_goTypes = []interface{}{
   955  	(Capability_Protocol)(0),                           // 0: envoy.service.health.v3.Capability.Protocol
   956  	(*Capability)(nil),                                 // 1: envoy.service.health.v3.Capability
   957  	(*HealthCheckRequest)(nil),                         // 2: envoy.service.health.v3.HealthCheckRequest
   958  	(*EndpointHealth)(nil),                             // 3: envoy.service.health.v3.EndpointHealth
   959  	(*LocalityEndpointsHealth)(nil),                    // 4: envoy.service.health.v3.LocalityEndpointsHealth
   960  	(*ClusterEndpointsHealth)(nil),                     // 5: envoy.service.health.v3.ClusterEndpointsHealth
   961  	(*EndpointHealthResponse)(nil),                     // 6: envoy.service.health.v3.EndpointHealthResponse
   962  	(*HealthCheckRequestOrEndpointHealthResponse)(nil), // 7: envoy.service.health.v3.HealthCheckRequestOrEndpointHealthResponse
   963  	(*LocalityEndpoints)(nil),                          // 8: envoy.service.health.v3.LocalityEndpoints
   964  	(*ClusterHealthCheck)(nil),                         // 9: envoy.service.health.v3.ClusterHealthCheck
   965  	(*HealthCheckSpecifier)(nil),                       // 10: envoy.service.health.v3.HealthCheckSpecifier
   966  	(*HdsDummy)(nil),                                   // 11: envoy.service.health.v3.HdsDummy
   967  	(*v3.Node)(nil),                                    // 12: envoy.config.core.v3.Node
   968  	(*v31.Endpoint)(nil),                               // 13: envoy.config.endpoint.v3.Endpoint
   969  	(v3.HealthStatus)(0),                               // 14: envoy.config.core.v3.HealthStatus
   970  	(*v3.Locality)(nil),                                // 15: envoy.config.core.v3.Locality
   971  	(*v3.HealthCheck)(nil),                             // 16: envoy.config.core.v3.HealthCheck
   972  	(*v32.Cluster_TransportSocketMatch)(nil),           // 17: envoy.config.cluster.v3.Cluster.TransportSocketMatch
   973  	(*duration.Duration)(nil),                          // 18: google.protobuf.Duration
   974  }
   975  var file_envoy_service_health_v3_hds_proto_depIdxs = []int32{
   976  	0,  // 0: envoy.service.health.v3.Capability.health_check_protocols:type_name -> envoy.service.health.v3.Capability.Protocol
   977  	12, // 1: envoy.service.health.v3.HealthCheckRequest.node:type_name -> envoy.config.core.v3.Node
   978  	1,  // 2: envoy.service.health.v3.HealthCheckRequest.capability:type_name -> envoy.service.health.v3.Capability
   979  	13, // 3: envoy.service.health.v3.EndpointHealth.endpoint:type_name -> envoy.config.endpoint.v3.Endpoint
   980  	14, // 4: envoy.service.health.v3.EndpointHealth.health_status:type_name -> envoy.config.core.v3.HealthStatus
   981  	15, // 5: envoy.service.health.v3.LocalityEndpointsHealth.locality:type_name -> envoy.config.core.v3.Locality
   982  	3,  // 6: envoy.service.health.v3.LocalityEndpointsHealth.endpoints_health:type_name -> envoy.service.health.v3.EndpointHealth
   983  	4,  // 7: envoy.service.health.v3.ClusterEndpointsHealth.locality_endpoints_health:type_name -> envoy.service.health.v3.LocalityEndpointsHealth
   984  	3,  // 8: envoy.service.health.v3.EndpointHealthResponse.endpoints_health:type_name -> envoy.service.health.v3.EndpointHealth
   985  	5,  // 9: envoy.service.health.v3.EndpointHealthResponse.cluster_endpoints_health:type_name -> envoy.service.health.v3.ClusterEndpointsHealth
   986  	2,  // 10: envoy.service.health.v3.HealthCheckRequestOrEndpointHealthResponse.health_check_request:type_name -> envoy.service.health.v3.HealthCheckRequest
   987  	6,  // 11: envoy.service.health.v3.HealthCheckRequestOrEndpointHealthResponse.endpoint_health_response:type_name -> envoy.service.health.v3.EndpointHealthResponse
   988  	15, // 12: envoy.service.health.v3.LocalityEndpoints.locality:type_name -> envoy.config.core.v3.Locality
   989  	13, // 13: envoy.service.health.v3.LocalityEndpoints.endpoints:type_name -> envoy.config.endpoint.v3.Endpoint
   990  	16, // 14: envoy.service.health.v3.ClusterHealthCheck.health_checks:type_name -> envoy.config.core.v3.HealthCheck
   991  	8,  // 15: envoy.service.health.v3.ClusterHealthCheck.locality_endpoints:type_name -> envoy.service.health.v3.LocalityEndpoints
   992  	17, // 16: envoy.service.health.v3.ClusterHealthCheck.transport_socket_matches:type_name -> envoy.config.cluster.v3.Cluster.TransportSocketMatch
   993  	9,  // 17: envoy.service.health.v3.HealthCheckSpecifier.cluster_health_checks:type_name -> envoy.service.health.v3.ClusterHealthCheck
   994  	18, // 18: envoy.service.health.v3.HealthCheckSpecifier.interval:type_name -> google.protobuf.Duration
   995  	7,  // 19: envoy.service.health.v3.HealthDiscoveryService.StreamHealthCheck:input_type -> envoy.service.health.v3.HealthCheckRequestOrEndpointHealthResponse
   996  	7,  // 20: envoy.service.health.v3.HealthDiscoveryService.FetchHealthCheck:input_type -> envoy.service.health.v3.HealthCheckRequestOrEndpointHealthResponse
   997  	10, // 21: envoy.service.health.v3.HealthDiscoveryService.StreamHealthCheck:output_type -> envoy.service.health.v3.HealthCheckSpecifier
   998  	10, // 22: envoy.service.health.v3.HealthDiscoveryService.FetchHealthCheck:output_type -> envoy.service.health.v3.HealthCheckSpecifier
   999  	21, // [21:23] is the sub-list for method output_type
  1000  	19, // [19:21] is the sub-list for method input_type
  1001  	19, // [19:19] is the sub-list for extension type_name
  1002  	19, // [19:19] is the sub-list for extension extendee
  1003  	0,  // [0:19] is the sub-list for field type_name
  1004  }
  1005  
  1006  func init() { file_envoy_service_health_v3_hds_proto_init() }
  1007  func file_envoy_service_health_v3_hds_proto_init() {
  1008  	if File_envoy_service_health_v3_hds_proto != nil {
  1009  		return
  1010  	}
  1011  	if !protoimpl.UnsafeEnabled {
  1012  		file_envoy_service_health_v3_hds_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  1013  			switch v := v.(*Capability); i {
  1014  			case 0:
  1015  				return &v.state
  1016  			case 1:
  1017  				return &v.sizeCache
  1018  			case 2:
  1019  				return &v.unknownFields
  1020  			default:
  1021  				return nil
  1022  			}
  1023  		}
  1024  		file_envoy_service_health_v3_hds_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  1025  			switch v := v.(*HealthCheckRequest); i {
  1026  			case 0:
  1027  				return &v.state
  1028  			case 1:
  1029  				return &v.sizeCache
  1030  			case 2:
  1031  				return &v.unknownFields
  1032  			default:
  1033  				return nil
  1034  			}
  1035  		}
  1036  		file_envoy_service_health_v3_hds_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  1037  			switch v := v.(*EndpointHealth); i {
  1038  			case 0:
  1039  				return &v.state
  1040  			case 1:
  1041  				return &v.sizeCache
  1042  			case 2:
  1043  				return &v.unknownFields
  1044  			default:
  1045  				return nil
  1046  			}
  1047  		}
  1048  		file_envoy_service_health_v3_hds_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  1049  			switch v := v.(*LocalityEndpointsHealth); i {
  1050  			case 0:
  1051  				return &v.state
  1052  			case 1:
  1053  				return &v.sizeCache
  1054  			case 2:
  1055  				return &v.unknownFields
  1056  			default:
  1057  				return nil
  1058  			}
  1059  		}
  1060  		file_envoy_service_health_v3_hds_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  1061  			switch v := v.(*ClusterEndpointsHealth); i {
  1062  			case 0:
  1063  				return &v.state
  1064  			case 1:
  1065  				return &v.sizeCache
  1066  			case 2:
  1067  				return &v.unknownFields
  1068  			default:
  1069  				return nil
  1070  			}
  1071  		}
  1072  		file_envoy_service_health_v3_hds_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  1073  			switch v := v.(*EndpointHealthResponse); i {
  1074  			case 0:
  1075  				return &v.state
  1076  			case 1:
  1077  				return &v.sizeCache
  1078  			case 2:
  1079  				return &v.unknownFields
  1080  			default:
  1081  				return nil
  1082  			}
  1083  		}
  1084  		file_envoy_service_health_v3_hds_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  1085  			switch v := v.(*HealthCheckRequestOrEndpointHealthResponse); i {
  1086  			case 0:
  1087  				return &v.state
  1088  			case 1:
  1089  				return &v.sizeCache
  1090  			case 2:
  1091  				return &v.unknownFields
  1092  			default:
  1093  				return nil
  1094  			}
  1095  		}
  1096  		file_envoy_service_health_v3_hds_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  1097  			switch v := v.(*LocalityEndpoints); i {
  1098  			case 0:
  1099  				return &v.state
  1100  			case 1:
  1101  				return &v.sizeCache
  1102  			case 2:
  1103  				return &v.unknownFields
  1104  			default:
  1105  				return nil
  1106  			}
  1107  		}
  1108  		file_envoy_service_health_v3_hds_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  1109  			switch v := v.(*ClusterHealthCheck); i {
  1110  			case 0:
  1111  				return &v.state
  1112  			case 1:
  1113  				return &v.sizeCache
  1114  			case 2:
  1115  				return &v.unknownFields
  1116  			default:
  1117  				return nil
  1118  			}
  1119  		}
  1120  		file_envoy_service_health_v3_hds_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  1121  			switch v := v.(*HealthCheckSpecifier); i {
  1122  			case 0:
  1123  				return &v.state
  1124  			case 1:
  1125  				return &v.sizeCache
  1126  			case 2:
  1127  				return &v.unknownFields
  1128  			default:
  1129  				return nil
  1130  			}
  1131  		}
  1132  		file_envoy_service_health_v3_hds_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  1133  			switch v := v.(*HdsDummy); i {
  1134  			case 0:
  1135  				return &v.state
  1136  			case 1:
  1137  				return &v.sizeCache
  1138  			case 2:
  1139  				return &v.unknownFields
  1140  			default:
  1141  				return nil
  1142  			}
  1143  		}
  1144  	}
  1145  	file_envoy_service_health_v3_hds_proto_msgTypes[6].OneofWrappers = []interface{}{
  1146  		(*HealthCheckRequestOrEndpointHealthResponse_HealthCheckRequest)(nil),
  1147  		(*HealthCheckRequestOrEndpointHealthResponse_EndpointHealthResponse)(nil),
  1148  	}
  1149  	type x struct{}
  1150  	out := protoimpl.TypeBuilder{
  1151  		File: protoimpl.DescBuilder{
  1152  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  1153  			RawDescriptor: file_envoy_service_health_v3_hds_proto_rawDesc,
  1154  			NumEnums:      1,
  1155  			NumMessages:   11,
  1156  			NumExtensions: 0,
  1157  			NumServices:   1,
  1158  		},
  1159  		GoTypes:           file_envoy_service_health_v3_hds_proto_goTypes,
  1160  		DependencyIndexes: file_envoy_service_health_v3_hds_proto_depIdxs,
  1161  		EnumInfos:         file_envoy_service_health_v3_hds_proto_enumTypes,
  1162  		MessageInfos:      file_envoy_service_health_v3_hds_proto_msgTypes,
  1163  	}.Build()
  1164  	File_envoy_service_health_v3_hds_proto = out.File
  1165  	file_envoy_service_health_v3_hds_proto_rawDesc = nil
  1166  	file_envoy_service_health_v3_hds_proto_goTypes = nil
  1167  	file_envoy_service_health_v3_hds_proto_depIdxs = nil
  1168  }
  1169  
  1170  // Reference imports to suppress errors if they are not otherwise used.
  1171  var _ context.Context
  1172  var _ grpc.ClientConnInterface
  1173  
  1174  // This is a compile-time assertion to ensure that this generated file
  1175  // is compatible with the grpc package it is being compiled against.
  1176  const _ = grpc.SupportPackageIsVersion6
  1177  
  1178  // HealthDiscoveryServiceClient is the client API for HealthDiscoveryService service.
  1179  //
  1180  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  1181  type HealthDiscoveryServiceClient interface {
  1182  	// 1. Envoy starts up and if its can_healthcheck option in the static
  1183  	//    bootstrap config is enabled, sends HealthCheckRequest to the management
  1184  	//    server. It supplies its capabilities (which protocol it can health check
  1185  	//    with, what zone it resides in, etc.).
  1186  	// 2. In response to (1), the management server designates this Envoy as a
  1187  	//    healthchecker to health check a subset of all upstream hosts for a given
  1188  	//    cluster (for example upstream Host 1 and Host 2). It streams
  1189  	//    HealthCheckSpecifier messages with cluster related configuration for all
  1190  	//    clusters this Envoy is designated to health check. Subsequent
  1191  	//    HealthCheckSpecifier message will be sent on changes to:
  1192  	//    a. Endpoints to health checks
  1193  	//    b. Per cluster configuration change
  1194  	// 3. Envoy creates a health probe based on the HealthCheck config and sends
  1195  	//    it to endpoint(ip:port) of Host 1 and 2. Based on the HealthCheck
  1196  	//    configuration Envoy waits upon the arrival of the probe response and
  1197  	//    looks at the content of the response to decide whether the endpoint is
  1198  	//    healthy or not. If a response hasn't been received within the timeout
  1199  	//    interval, the endpoint health status is considered TIMEOUT.
  1200  	// 4. Envoy reports results back in an EndpointHealthResponse message.
  1201  	//    Envoy streams responses as often as the interval configured by the
  1202  	//    management server in HealthCheckSpecifier.
  1203  	// 5. The management Server collects health statuses for all endpoints in the
  1204  	//    cluster (for all clusters) and uses this information to construct
  1205  	//    EndpointDiscoveryResponse messages.
  1206  	// 6. Once Envoy has a list of upstream endpoints to send traffic to, it load
  1207  	//    balances traffic to them without additional health checking. It may
  1208  	//    use inline healthcheck (i.e. consider endpoint UNHEALTHY if connection
  1209  	//    failed to a particular endpoint to account for health status propagation
  1210  	//    delay between HDS and EDS).
  1211  	// By default, can_healthcheck is true. If can_healthcheck is false, Cluster
  1212  	// configuration may not contain HealthCheck message.
  1213  	// TODO(htuch): How is can_healthcheck communicated to CDS to ensure the above
  1214  	// invariant?
  1215  	// TODO(htuch): Add @amb67's diagram.
  1216  	StreamHealthCheck(ctx context.Context, opts ...grpc.CallOption) (HealthDiscoveryService_StreamHealthCheckClient, error)
  1217  	// TODO(htuch): Unlike the gRPC version, there is no stream-based binding of
  1218  	// request/response. Should we add an identifier to the HealthCheckSpecifier
  1219  	// to bind with the response?
  1220  	FetchHealthCheck(ctx context.Context, in *HealthCheckRequestOrEndpointHealthResponse, opts ...grpc.CallOption) (*HealthCheckSpecifier, error)
  1221  }
  1222  
  1223  type healthDiscoveryServiceClient struct {
  1224  	cc grpc.ClientConnInterface
  1225  }
  1226  
  1227  func NewHealthDiscoveryServiceClient(cc grpc.ClientConnInterface) HealthDiscoveryServiceClient {
  1228  	return &healthDiscoveryServiceClient{cc}
  1229  }
  1230  
  1231  func (c *healthDiscoveryServiceClient) StreamHealthCheck(ctx context.Context, opts ...grpc.CallOption) (HealthDiscoveryService_StreamHealthCheckClient, error) {
  1232  	stream, err := c.cc.NewStream(ctx, &_HealthDiscoveryService_serviceDesc.Streams[0], "/envoy.service.health.v3.HealthDiscoveryService/StreamHealthCheck", opts...)
  1233  	if err != nil {
  1234  		return nil, err
  1235  	}
  1236  	x := &healthDiscoveryServiceStreamHealthCheckClient{stream}
  1237  	return x, nil
  1238  }
  1239  
  1240  type HealthDiscoveryService_StreamHealthCheckClient interface {
  1241  	Send(*HealthCheckRequestOrEndpointHealthResponse) error
  1242  	Recv() (*HealthCheckSpecifier, error)
  1243  	grpc.ClientStream
  1244  }
  1245  
  1246  type healthDiscoveryServiceStreamHealthCheckClient struct {
  1247  	grpc.ClientStream
  1248  }
  1249  
  1250  func (x *healthDiscoveryServiceStreamHealthCheckClient) Send(m *HealthCheckRequestOrEndpointHealthResponse) error {
  1251  	return x.ClientStream.SendMsg(m)
  1252  }
  1253  
  1254  func (x *healthDiscoveryServiceStreamHealthCheckClient) Recv() (*HealthCheckSpecifier, error) {
  1255  	m := new(HealthCheckSpecifier)
  1256  	if err := x.ClientStream.RecvMsg(m); err != nil {
  1257  		return nil, err
  1258  	}
  1259  	return m, nil
  1260  }
  1261  
  1262  func (c *healthDiscoveryServiceClient) FetchHealthCheck(ctx context.Context, in *HealthCheckRequestOrEndpointHealthResponse, opts ...grpc.CallOption) (*HealthCheckSpecifier, error) {
  1263  	out := new(HealthCheckSpecifier)
  1264  	err := c.cc.Invoke(ctx, "/envoy.service.health.v3.HealthDiscoveryService/FetchHealthCheck", in, out, opts...)
  1265  	if err != nil {
  1266  		return nil, err
  1267  	}
  1268  	return out, nil
  1269  }
  1270  
  1271  // HealthDiscoveryServiceServer is the server API for HealthDiscoveryService service.
  1272  type HealthDiscoveryServiceServer interface {
  1273  	// 1. Envoy starts up and if its can_healthcheck option in the static
  1274  	//    bootstrap config is enabled, sends HealthCheckRequest to the management
  1275  	//    server. It supplies its capabilities (which protocol it can health check
  1276  	//    with, what zone it resides in, etc.).
  1277  	// 2. In response to (1), the management server designates this Envoy as a
  1278  	//    healthchecker to health check a subset of all upstream hosts for a given
  1279  	//    cluster (for example upstream Host 1 and Host 2). It streams
  1280  	//    HealthCheckSpecifier messages with cluster related configuration for all
  1281  	//    clusters this Envoy is designated to health check. Subsequent
  1282  	//    HealthCheckSpecifier message will be sent on changes to:
  1283  	//    a. Endpoints to health checks
  1284  	//    b. Per cluster configuration change
  1285  	// 3. Envoy creates a health probe based on the HealthCheck config and sends
  1286  	//    it to endpoint(ip:port) of Host 1 and 2. Based on the HealthCheck
  1287  	//    configuration Envoy waits upon the arrival of the probe response and
  1288  	//    looks at the content of the response to decide whether the endpoint is
  1289  	//    healthy or not. If a response hasn't been received within the timeout
  1290  	//    interval, the endpoint health status is considered TIMEOUT.
  1291  	// 4. Envoy reports results back in an EndpointHealthResponse message.
  1292  	//    Envoy streams responses as often as the interval configured by the
  1293  	//    management server in HealthCheckSpecifier.
  1294  	// 5. The management Server collects health statuses for all endpoints in the
  1295  	//    cluster (for all clusters) and uses this information to construct
  1296  	//    EndpointDiscoveryResponse messages.
  1297  	// 6. Once Envoy has a list of upstream endpoints to send traffic to, it load
  1298  	//    balances traffic to them without additional health checking. It may
  1299  	//    use inline healthcheck (i.e. consider endpoint UNHEALTHY if connection
  1300  	//    failed to a particular endpoint to account for health status propagation
  1301  	//    delay between HDS and EDS).
  1302  	// By default, can_healthcheck is true. If can_healthcheck is false, Cluster
  1303  	// configuration may not contain HealthCheck message.
  1304  	// TODO(htuch): How is can_healthcheck communicated to CDS to ensure the above
  1305  	// invariant?
  1306  	// TODO(htuch): Add @amb67's diagram.
  1307  	StreamHealthCheck(HealthDiscoveryService_StreamHealthCheckServer) error
  1308  	// TODO(htuch): Unlike the gRPC version, there is no stream-based binding of
  1309  	// request/response. Should we add an identifier to the HealthCheckSpecifier
  1310  	// to bind with the response?
  1311  	FetchHealthCheck(context.Context, *HealthCheckRequestOrEndpointHealthResponse) (*HealthCheckSpecifier, error)
  1312  }
  1313  
  1314  // UnimplementedHealthDiscoveryServiceServer can be embedded to have forward compatible implementations.
  1315  type UnimplementedHealthDiscoveryServiceServer struct {
  1316  }
  1317  
  1318  func (*UnimplementedHealthDiscoveryServiceServer) StreamHealthCheck(HealthDiscoveryService_StreamHealthCheckServer) error {
  1319  	return status.Errorf(codes.Unimplemented, "method StreamHealthCheck not implemented")
  1320  }
  1321  func (*UnimplementedHealthDiscoveryServiceServer) FetchHealthCheck(context.Context, *HealthCheckRequestOrEndpointHealthResponse) (*HealthCheckSpecifier, error) {
  1322  	return nil, status.Errorf(codes.Unimplemented, "method FetchHealthCheck not implemented")
  1323  }
  1324  
  1325  func RegisterHealthDiscoveryServiceServer(s *grpc.Server, srv HealthDiscoveryServiceServer) {
  1326  	s.RegisterService(&_HealthDiscoveryService_serviceDesc, srv)
  1327  }
  1328  
  1329  func _HealthDiscoveryService_StreamHealthCheck_Handler(srv interface{}, stream grpc.ServerStream) error {
  1330  	return srv.(HealthDiscoveryServiceServer).StreamHealthCheck(&healthDiscoveryServiceStreamHealthCheckServer{stream})
  1331  }
  1332  
  1333  type HealthDiscoveryService_StreamHealthCheckServer interface {
  1334  	Send(*HealthCheckSpecifier) error
  1335  	Recv() (*HealthCheckRequestOrEndpointHealthResponse, error)
  1336  	grpc.ServerStream
  1337  }
  1338  
  1339  type healthDiscoveryServiceStreamHealthCheckServer struct {
  1340  	grpc.ServerStream
  1341  }
  1342  
  1343  func (x *healthDiscoveryServiceStreamHealthCheckServer) Send(m *HealthCheckSpecifier) error {
  1344  	return x.ServerStream.SendMsg(m)
  1345  }
  1346  
  1347  func (x *healthDiscoveryServiceStreamHealthCheckServer) Recv() (*HealthCheckRequestOrEndpointHealthResponse, error) {
  1348  	m := new(HealthCheckRequestOrEndpointHealthResponse)
  1349  	if err := x.ServerStream.RecvMsg(m); err != nil {
  1350  		return nil, err
  1351  	}
  1352  	return m, nil
  1353  }
  1354  
  1355  func _HealthDiscoveryService_FetchHealthCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  1356  	in := new(HealthCheckRequestOrEndpointHealthResponse)
  1357  	if err := dec(in); err != nil {
  1358  		return nil, err
  1359  	}
  1360  	if interceptor == nil {
  1361  		return srv.(HealthDiscoveryServiceServer).FetchHealthCheck(ctx, in)
  1362  	}
  1363  	info := &grpc.UnaryServerInfo{
  1364  		Server:     srv,
  1365  		FullMethod: "/envoy.service.health.v3.HealthDiscoveryService/FetchHealthCheck",
  1366  	}
  1367  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  1368  		return srv.(HealthDiscoveryServiceServer).FetchHealthCheck(ctx, req.(*HealthCheckRequestOrEndpointHealthResponse))
  1369  	}
  1370  	return interceptor(ctx, in, info, handler)
  1371  }
  1372  
  1373  var _HealthDiscoveryService_serviceDesc = grpc.ServiceDesc{
  1374  	ServiceName: "envoy.service.health.v3.HealthDiscoveryService",
  1375  	HandlerType: (*HealthDiscoveryServiceServer)(nil),
  1376  	Methods: []grpc.MethodDesc{
  1377  		{
  1378  			MethodName: "FetchHealthCheck",
  1379  			Handler:    _HealthDiscoveryService_FetchHealthCheck_Handler,
  1380  		},
  1381  	},
  1382  	Streams: []grpc.StreamDesc{
  1383  		{
  1384  			StreamName:    "StreamHealthCheck",
  1385  			Handler:       _HealthDiscoveryService_StreamHealthCheck_Handler,
  1386  			ServerStreams: true,
  1387  			ClientStreams: true,
  1388  		},
  1389  	},
  1390  	Metadata: "envoy/service/health/v3/hds.proto",
  1391  }