// Code generated by protoc-gen-go. DO NOT EDIT.
// source: envoy/service/load_stats/v2/lrs.proto

package envoy_service_load_stats_v2

import (
	context "context"
	fmt "fmt"
	core "github.com/envoyproxy/go-control-plane/envoy/api/v2/core"
	endpoint "github.com/envoyproxy/go-control-plane/envoy/api/v2/endpoint"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	proto "github.com/golang/protobuf/proto"
	duration "github.com/golang/protobuf/ptypes/duration"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

type LoadStatsRequest struct {
	Node                 *core.Node               `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
	ClusterStats         []*endpoint.ClusterStats `protobuf:"bytes,2,rep,name=cluster_stats,json=clusterStats,proto3" json:"cluster_stats,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
	XXX_unrecognized     []byte                   `json:"-"`
	XXX_sizecache        int32                    `json:"-"`
}

func (m *LoadStatsRequest) Reset()         { *m = LoadStatsRequest{} }
func (m *LoadStatsRequest) String() string { return proto.CompactTextString(m) }
func (*LoadStatsRequest) ProtoMessage()    {}
func (*LoadStatsRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_cd7332d279836518, []int{0}
}

func (m *LoadStatsRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_LoadStatsRequest.Unmarshal(m, b)
}
func (m *LoadStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_LoadStatsRequest.Marshal(b, m, deterministic)
}
func (m *LoadStatsRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_LoadStatsRequest.Merge(m, src)
}
func (m *LoadStatsRequest) XXX_Size() int {
	return xxx_messageInfo_LoadStatsRequest.Size(m)
}
func (m *LoadStatsRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_LoadStatsRequest.DiscardUnknown(m)
}

var xxx_messageInfo_LoadStatsRequest proto.InternalMessageInfo

func (m *LoadStatsRequest) GetNode() *core.Node {
	if m != nil {
		return m.Node
	}
	return nil
}

func (m *LoadStatsRequest) GetClusterStats() []*endpoint.ClusterStats {
	if m != nil {
		return m.ClusterStats
	}
	return nil
}

type LoadStatsResponse struct {
	Clusters                  []string           `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
	LoadReportingInterval     *duration.Duration `protobuf:"bytes,2,opt,name=load_reporting_interval,json=loadReportingInterval,proto3" json:"load_reporting_interval,omitempty"`
	ReportEndpointGranularity bool               `protobuf:"varint,3,opt,name=report_endpoint_granularity,json=reportEndpointGranularity,proto3" json:"report_endpoint_granularity,omitempty"`
	XXX_NoUnkeyedLiteral      struct{}           `json:"-"`
	XXX_unrecognized          []byte             `json:"-"`
	XXX_sizecache             int32              `json:"-"`
}

func (m *LoadStatsResponse) Reset()         { *m = LoadStatsResponse{} }
func (m *LoadStatsResponse) String() string { return proto.CompactTextString(m) }
func (*LoadStatsResponse) ProtoMessage()    {}
func (*LoadStatsResponse) Descriptor() ([]byte, []int) {
	return fileDescriptor_cd7332d279836518, []int{1}
}

func (m *LoadStatsResponse) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_LoadStatsResponse.Unmarshal(m, b)
}
func (m *LoadStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_LoadStatsResponse.Marshal(b, m, deterministic)
}
func (m *LoadStatsResponse) XXX_Merge(src proto.Message) {
	xxx_messageInfo_LoadStatsResponse.Merge(m, src)
}
func (m *LoadStatsResponse) XXX_Size() int {
	return xxx_messageInfo_LoadStatsResponse.Size(m)
}
func (m *LoadStatsResponse) XXX_DiscardUnknown() {
	xxx_messageInfo_LoadStatsResponse.DiscardUnknown(m)
}

var xxx_messageInfo_LoadStatsResponse proto.InternalMessageInfo

func (m *LoadStatsResponse) GetClusters() []string {
	if m != nil {
		return m.Clusters
	}
	return nil
}

func (m *LoadStatsResponse) GetLoadReportingInterval() *duration.Duration {
	if m != nil {
		return m.LoadReportingInterval
	}
	return nil
}

func (m *LoadStatsResponse) GetReportEndpointGranularity() bool {
	if m != nil {
		return m.ReportEndpointGranularity
	}
	return false
}

func init() {
	proto.RegisterType((*LoadStatsRequest)(nil), "envoy.service.load_stats.v2.LoadStatsRequest")
	proto.RegisterType((*LoadStatsResponse)(nil), "envoy.service.load_stats.v2.LoadStatsResponse")
}

func init() {
	proto.RegisterFile("envoy/service/load_stats/v2/lrs.proto", fileDescriptor_cd7332d279836518)
}

var fileDescriptor_cd7332d279836518 = []byte{
	// 420 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x8e, 0xd3, 0x30,
	0x14, 0x45, 0x71, 0x0b, 0x28, 0x78, 0x40, 0x80, 0x05, 0x6a, 0xa6, 0x83, 0x50, 0x55, 0x40, 0x04,
	0x21, 0x6c, 0x14, 0x76, 0x2c, 0x58, 0x14, 0x10, 0x20, 0x55, 0x68, 0x48, 0x3f, 0xa0, 0x72, 0x93,
	0x47, 0x64, 0x29, 0xf8, 0x05, 0xdb, 0xb1, 0xe8, 0x1f, 0xc0, 0x86, 0x05, 0xdf, 0xc5, 0x17, 0xb1,
	0x42, 0x89, 0x93, 0x99, 0x0c, 0x8b, 0x8a, 0x5d, 0xac, 0x77, 0xee, 0xf3, 0xbd, 0x37, 0xa6, 0x8f,
	0x40, 0x7b, 0xdc, 0x0b, 0x0b, 0xc6, 0xab, 0x1c, 0x44, 0x85, 0xb2, 0xd8, 0x5a, 0x27, 0x9d, 0x15,
	0x3e, 0x15, 0x95, 0xb1, 0xbc, 0x36, 0xe8, 0x90, 0x9d, 0x74, 0x18, 0xef, 0x31, 0x7e, 0x8e, 0x71,
	0x9f, 0xce, 0xef, 0x85, 0x1d, 0xb2, 0x56, 0xad, 0x28, 0x47, 0x03, 0x62, 0x27, 0x2d, 0x04, 0xe9,
	0xfc, 0xf1, 0x85, 0x29, 0xe8, 0xa2, 0x46, 0xa5, 0x5d, 0xb8, 0xc9, 0x40, 0x8d, 0xc6, 0xf5, 0xe0,
	0xfd, 0x12, 0xb1, 0xac, 0x40, 0x74, 0xa7, 0x5d, 0xf3, 0x59, 0x14, 0x8d, 0x91, 0x4e, 0xa1, 0xee,
	0xe7, 0x33, 0x2f, 0x2b, 0x55, 0x48, 0x07, 0x62, 0xf8, 0x08, 0x83, 0xe5, 0x0f, 0x42, 0x6f, 0xad,
	0x51, 0x16, 0x9b, 0xd6, 0x50, 0x06, 0x5f, 0x1b, 0xb0, 0x8e, 0x3d, 0xa5, 0x97, 0x35, 0x16, 0x10,
	0x93, 0x05, 0x49, 0x8e, 0xd2, 0x19, 0x0f, 0x01, 0x64, 0xad, 0xb8, 0x4f, 0x79, 0xeb, 0x91, 0x7f,
	0xc4, 0x02, 0xb2, 0x0e, 0x62, 0xef, 0xe9, 0x8d, 0xbc, 0x6a, 0xac, 0x03, 0x13, 0x52, 0xc5, 0x93,
	0xc5, 0x34, 0x39, 0x4a, 0x1f, 0x5c, 0x54, 0x0d, 0xde, 0xf9, 0xeb, 0xc0, 0x86, 0xfb, 0xae, 0xe7,
	0xa3, 0xd3, 0xf2, 0x37, 0xa1, 0xb7, 0x47, 0x5e, 0x6c, 0x8d, 0xda, 0x02, 0x7b, 0x48, 0xa3, 0x9e,
	0xb2, 0x31, 0x59, 0x4c, 0x93, 0x6b, 0xab, 0xe8, 0xcf, 0xea, 0xca, 0x2f, 0x32, 0x89, 0x48, 0x76,
	0x36, 0x61, 0x9f, 0xe8, 0x6c, 0xd4, 0x8a, 0xd2, 0xe5, 0x56, 0x69, 0x07, 0xc6, 0xcb, 0x2a, 0x9e,
	0x74, 0x29, 0x8e, 0x79, 0xa8, 0x88, 0x0f, 0x15, 0xf1, 0x37, 0x7d, 0x45, 0xd9, 0xdd, 0x56, 0x99,
	0x0d, 0xc2, 0x0f, 0xbd, 0x8e, 0xbd, 0xa2, 0x27, 0x61, 0xdb, 0x76, 0x30, 0xbf, 0x2d, 0x8d, 0xd4,
	0x4d, 0x25, 0x8d, 0x72, 0xfb, 0x78, 0xba, 0x20, 0x49, 0x94, 0x1d, 0x07, 0xe4, 0x6d, 0x4f, 0xbc,
	0x3b, 0x07, 0xd2, 0x9f, 0x84, 0xde, 0x59, 0x8f, 0x37, 0x6f, 0xc2, 0x0b, 0x60, 0x9e, 0xde, 0xdc,
	0x38, 0x03, 0xf2, 0xcb, 0x59, 0x58, 0xf6, 0x8c, 0x1f, 0x78, 0x24, 0xfc, 0xdf, 0x1f, 0x34, 0xe7,
	0xff, 0x8b, 0x87, 0x0e, 0x97, 0x97, 0x12, 0xf2, 0x9c, 0xac, 0x5e, 0xd2, 0x27, 0x0a, 0x83, 0xb2,
	0x36, 0xf8, 0x6d, 0x7f, 0x68, 0xc9, 0x2a, 0x5a, 0x1b, 0x7b, 0xda, 0x56, 0x75, 0x4a, 0xbe, 0x13,
	0xb2, 0xbb, 0xda, 0xd5, 0xf6, 0xe2, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x0e, 0xc0, 0x25,
	0xf4, 0x02, 0x00, 0x00,
}

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

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

// LoadReportingServiceClient is the client API for LoadReportingService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type LoadReportingServiceClient interface {
	StreamLoadStats(ctx context.Context, opts ...grpc.CallOption) (LoadReportingService_StreamLoadStatsClient, error)
}

type loadReportingServiceClient struct {
	cc *grpc.ClientConn
}

func NewLoadReportingServiceClient(cc *grpc.ClientConn) LoadReportingServiceClient {
	return &loadReportingServiceClient{cc}
}

func (c *loadReportingServiceClient) StreamLoadStats(ctx context.Context, opts ...grpc.CallOption) (LoadReportingService_StreamLoadStatsClient, error) {
	stream, err := c.cc.NewStream(ctx, &_LoadReportingService_serviceDesc.Streams[0], "/envoy.service.load_stats.v2.LoadReportingService/StreamLoadStats", opts...)
	if err != nil {
		return nil, err
	}
	x := &loadReportingServiceStreamLoadStatsClient{stream}
	return x, nil
}

type LoadReportingService_StreamLoadStatsClient interface {
	Send(*LoadStatsRequest) error
	Recv() (*LoadStatsResponse, error)
	grpc.ClientStream
}

type loadReportingServiceStreamLoadStatsClient struct {
	grpc.ClientStream
}

func (x *loadReportingServiceStreamLoadStatsClient) Send(m *LoadStatsRequest) error {
	return x.ClientStream.SendMsg(m)
}

func (x *loadReportingServiceStreamLoadStatsClient) Recv() (*LoadStatsResponse, error) {
	m := new(LoadStatsResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

// LoadReportingServiceServer is the server API for LoadReportingService service.
type LoadReportingServiceServer interface {
	StreamLoadStats(LoadReportingService_StreamLoadStatsServer) error
}

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

func (*UnimplementedLoadReportingServiceServer) StreamLoadStats(srv LoadReportingService_StreamLoadStatsServer) error {
	return status.Errorf(codes.Unimplemented, "method StreamLoadStats not implemented")
}

func RegisterLoadReportingServiceServer(s *grpc.Server, srv LoadReportingServiceServer) {
	s.RegisterService(&_LoadReportingService_serviceDesc, srv)
}

func _LoadReportingService_StreamLoadStats_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(LoadReportingServiceServer).StreamLoadStats(&loadReportingServiceStreamLoadStatsServer{stream})
}

type LoadReportingService_StreamLoadStatsServer interface {
	Send(*LoadStatsResponse) error
	Recv() (*LoadStatsRequest, error)
	grpc.ServerStream
}

type loadReportingServiceStreamLoadStatsServer struct {
	grpc.ServerStream
}

func (x *loadReportingServiceStreamLoadStatsServer) Send(m *LoadStatsResponse) error {
	return x.ServerStream.SendMsg(m)
}

func (x *loadReportingServiceStreamLoadStatsServer) Recv() (*LoadStatsRequest, error) {
	m := new(LoadStatsRequest)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

var _LoadReportingService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "envoy.service.load_stats.v2.LoadReportingService",
	HandlerType: (*LoadReportingServiceServer)(nil),
	Methods:     []grpc.MethodDesc{},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "StreamLoadStats",
			Handler:       _LoadReportingService_StreamLoadStats_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
	},
	Metadata: "envoy/service/load_stats/v2/lrs.proto",
}
