...

Source file src/github.com/datawire/ambassador/v2/pkg/api/envoy/service/health/v4alpha/hds.pb.go

Documentation: github.com/datawire/ambassador/v2/pkg/api/envoy/service/health/v4alpha

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

View as plain text