package crossconnect

import (
	context "context"
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	empty "github.com/golang/protobuf/ptypes/empty"
	connection "github.com/networkservicemesh/networkservicemesh/controlplane/pkg/apis/local/connection"
	connection1 "github.com/networkservicemesh/networkservicemesh/controlplane/pkg/apis/remote/connection"
	grpc "google.golang.org/grpc"
	math "math"
)

var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

const _ = proto.ProtoPackageIsVersion3 

type CrossConnectEventType int32

const (
	CrossConnectEventType_INITIAL_STATE_TRANSFER CrossConnectEventType = 0
	CrossConnectEventType_UPDATE                 CrossConnectEventType = 1
	CrossConnectEventType_DELETE                 CrossConnectEventType = 2
)

var CrossConnectEventType_name = map[int32]string{
	0: "INITIAL_STATE_TRANSFER",
	1: "UPDATE",
	2: "DELETE",
}

var CrossConnectEventType_value = map[string]int32{
	"INITIAL_STATE_TRANSFER": 0,
	"UPDATE":                 1,
	"DELETE":                 2,
}

func (x CrossConnectEventType) String() string {
	return proto.EnumName(CrossConnectEventType_name, int32(x))
}

func (CrossConnectEventType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_97acf85fcaabb3f6, []int{0}
}

type Metrics struct {
	Metrics              map[string]string `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

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

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

var xxx_messageInfo_Metrics proto.InternalMessageInfo

func (m *Metrics) GetMetrics() map[string]string {
	if m != nil {
		return m.Metrics
	}
	return nil
}

type CrossConnectEvent struct {
	Type                 CrossConnectEventType    `protobuf:"varint,1,opt,name=type,proto3,enum=crossconnect.CrossConnectEventType" json:"type,omitempty"`
	CrossConnects        map[string]*CrossConnect `protobuf:"bytes,2,rep,name=cross_connects,json=crossConnects,proto3" json:"cross_connects,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Metrics              map[string]*Metrics      `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
	XXX_unrecognized     []byte                   `json:"-"`
	XXX_sizecache        int32                    `json:"-"`
}

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

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

var xxx_messageInfo_CrossConnectEvent proto.InternalMessageInfo

func (m *CrossConnectEvent) GetType() CrossConnectEventType {
	if m != nil {
		return m.Type
	}
	return CrossConnectEventType_INITIAL_STATE_TRANSFER
}

func (m *CrossConnectEvent) GetCrossConnects() map[string]*CrossConnect {
	if m != nil {
		return m.CrossConnects
	}
	return nil
}

func (m *CrossConnectEvent) GetMetrics() map[string]*Metrics {
	if m != nil {
		return m.Metrics
	}
	return nil
}

type CrossConnect struct {
	Id      string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Payload string `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`

	Source isCrossConnect_Source `protobuf_oneof:"source"`

	Destination          isCrossConnect_Destination `protobuf_oneof:"destination"`
	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
	XXX_unrecognized     []byte                     `json:"-"`
	XXX_sizecache        int32                      `json:"-"`
}

func (m *CrossConnect) Reset()         { *m = CrossConnect{} }
func (m *CrossConnect) String() string { return proto.CompactTextString(m) }
func (*CrossConnect) ProtoMessage()    {}
func (*CrossConnect) Descriptor() ([]byte, []int) {
	return fileDescriptor_97acf85fcaabb3f6, []int{2}
}

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

var xxx_messageInfo_CrossConnect proto.InternalMessageInfo

func (m *CrossConnect) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CrossConnect) GetPayload() string {
	if m != nil {
		return m.Payload
	}
	return ""
}

type isCrossConnect_Source interface {
	isCrossConnect_Source()
}

type CrossConnect_LocalSource struct {
	LocalSource *connection.Connection `protobuf:"bytes,4,opt,name=local_source,json=localSource,proto3,oneof"`
}

type CrossConnect_RemoteSource struct {
	RemoteSource *connection1.Connection `protobuf:"bytes,5,opt,name=remote_source,json=remoteSource,proto3,oneof"`
}

func (*CrossConnect_LocalSource) isCrossConnect_Source() {}

func (*CrossConnect_RemoteSource) isCrossConnect_Source() {}

func (m *CrossConnect) GetSource() isCrossConnect_Source {
	if m != nil {
		return m.Source
	}
	return nil
}

func (m *CrossConnect) GetLocalSource() *connection.Connection {
	if x, ok := m.GetSource().(*CrossConnect_LocalSource); ok {
		return x.LocalSource
	}
	return nil
}

func (m *CrossConnect) GetRemoteSource() *connection1.Connection {
	if x, ok := m.GetSource().(*CrossConnect_RemoteSource); ok {
		return x.RemoteSource
	}
	return nil
}

type isCrossConnect_Destination interface {
	isCrossConnect_Destination()
}

type CrossConnect_LocalDestination struct {
	LocalDestination *connection.Connection `protobuf:"bytes,6,opt,name=local_destination,json=localDestination,proto3,oneof"`
}

type CrossConnect_RemoteDestination struct {
	RemoteDestination *connection1.Connection `protobuf:"bytes,7,opt,name=remote_destination,json=remoteDestination,proto3,oneof"`
}

func (*CrossConnect_LocalDestination) isCrossConnect_Destination() {}

func (*CrossConnect_RemoteDestination) isCrossConnect_Destination() {}

func (m *CrossConnect) GetDestination() isCrossConnect_Destination {
	if m != nil {
		return m.Destination
	}
	return nil
}

func (m *CrossConnect) GetLocalDestination() *connection.Connection {
	if x, ok := m.GetDestination().(*CrossConnect_LocalDestination); ok {
		return x.LocalDestination
	}
	return nil
}

func (m *CrossConnect) GetRemoteDestination() *connection1.Connection {
	if x, ok := m.GetDestination().(*CrossConnect_RemoteDestination); ok {
		return x.RemoteDestination
	}
	return nil
}

func (*CrossConnect) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*CrossConnect_LocalSource)(nil),
		(*CrossConnect_RemoteSource)(nil),
		(*CrossConnect_LocalDestination)(nil),
		(*CrossConnect_RemoteDestination)(nil),
	}
}

func init() {
	proto.RegisterEnum("crossconnect.CrossConnectEventType", CrossConnectEventType_name, CrossConnectEventType_value)
	proto.RegisterType((*Metrics)(nil), "crossconnect.Metrics")
	proto.RegisterMapType((map[string]string)(nil), "crossconnect.Metrics.MetricsEntry")
	proto.RegisterType((*CrossConnectEvent)(nil), "crossconnect.CrossConnectEvent")
	proto.RegisterMapType((map[string]*CrossConnect)(nil), "crossconnect.CrossConnectEvent.CrossConnectsEntry")
	proto.RegisterMapType((map[string]*Metrics)(nil), "crossconnect.CrossConnectEvent.MetricsEntry")
	proto.RegisterType((*CrossConnect)(nil), "crossconnect.CrossConnect")
}

func init() { proto.RegisterFile("crossconnect.proto", fileDescriptor_97acf85fcaabb3f6) }

var fileDescriptor_97acf85fcaabb3f6 = []byte{

	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x41, 0x6f, 0xd3, 0x30,
	0x14, 0x5e, 0xd2, 0xad, 0x85, 0xd7, 0xae, 0x6a, 0xcd, 0x36, 0x45, 0x11, 0x88, 0xa9, 0x5c, 0x26,
	0x40, 0xc9, 0xd6, 0x1d, 0x40, 0x15, 0x07, 0xba, 0x36, 0x13, 0xd5, 0xb6, 0x8a, 0xa5, 0xe1, 0x80,
	0x84, 0x54, 0xa5, 0xa9, 0x49, 0xa3, 0xa6, 0x71, 0x14, 0xbb, 0x45, 0x39, 0xf3, 0x47, 0xf8, 0x97,
	0x5c, 0x51, 0xec, 0x94, 0xb9, 0x5a, 0x46, 0x77, 0xe0, 0x92, 0x3c, 0x7f, 0xef, 0xbd, 0xef, 0x7b,
	0x7e, 0xcf, 0x36, 0x20, 0x2f, 0x21, 0x94, 0x7a, 0x24, 0x8a, 0xb0, 0xc7, 0x8c, 0x38, 0x21, 0x8c,
	0xa0, 0x9a, 0x8c, 0xe9, 0x33, 0x3f, 0x60, 0xb3, 0xe5, 0xc4, 0xf0, 0xc8, 0xc2, 0x8c, 0x30, 0xfb,
	0x41, 0x92, 0x39, 0xc5, 0xc9, 0x2a, 0xf0, 0xf0, 0x02, 0xd3, 0x59, 0x11, 0xe4, 0x91, 0x88, 0x25,
	0x24, 0x8c, 0x43, 0x37, 0xc2, 0x66, 0x3c, 0xf7, 0x4d, 0x37, 0x0e, 0xa8, 0x19, 0x12, 0xcf, 0x0d,
	0xcd, 0x9c, 0x35, 0x20, 0x91, 0x64, 0x0a, 0x5d, 0x3d, 0xf8, 0x4f, 0x4a, 0x09, 0x5e, 0x10, 0x86,
	0xff, 0x29, 0xd5, 0x91, 0xa4, 0x7c, 0x12, 0xba, 0x91, 0x6f, 0x72, 0xc7, 0x64, 0xf9, 0xfd, 0xe3,
	0xea, 0xcc, 0x38, 0x37, 0xce, 0xcc, 0x98, 0xa5, 0x31, 0xa6, 0x26, 0x5e, 0xc4, 0x2c, 0x15, 0x5f,
	0x91, 0xdb, 0xfa, 0xa9, 0x40, 0xe5, 0x06, 0xb3, 0x24, 0xf0, 0x28, 0xfa, 0x00, 0x95, 0x85, 0x30,
	0x35, 0xe5, 0xb8, 0x74, 0x52, 0x6d, 0xb7, 0x8c, 0x8d, 0x86, 0xe6, 0x71, 0xeb, 0xbf, 0x15, 0xb1,
	0x24, 0xb5, 0xd7, 0x29, 0x7a, 0x07, 0x6a, 0xb2, 0x03, 0x35, 0xa0, 0x34, 0xc7, 0xa9, 0xa6, 0x1c,
	0x2b, 0x27, 0x4f, 0xed, 0xcc, 0x44, 0x07, 0xb0, 0xb7, 0x72, 0xc3, 0x25, 0xd6, 0x54, 0x8e, 0x89,
	0x45, 0x47, 0x7d, 0xaf, 0xb4, 0x7e, 0x95, 0xa0, 0xd9, 0xcb, 0xa4, 0x7a, 0x42, 0xca, 0x5a, 0xe1,
	0x88, 0xa1, 0x77, 0xb0, 0x9b, 0x95, 0xcd, 0x29, 0xea, 0xed, 0x57, 0x9b, 0xc5, 0xdc, 0x0b, 0x77,
	0xd2, 0x18, 0xdb, 0x3c, 0x01, 0x7d, 0x85, 0x3a, 0x8f, 0x1d, 0xe7, 0xc1, 0x54, 0x53, 0xf9, 0x7e,
	0xda, 0x5b, 0x28, 0x36, 0x90, 0x7c, 0x7f, 0xfb, 0x9e, 0x8c, 0xa1, 0xcb, 0xbb, 0x1e, 0x95, 0x38,
	0xe7, 0xdb, 0x6d, 0x9c, 0xc5, 0xdd, 0xfa, 0x06, 0xe8, 0xbe, 0x58, 0x41, 0xcf, 0x4e, 0xe5, 0x9e,
	0x55, 0xdb, 0xfa, 0xc3, 0x6a, 0x52, 0x3f, 0xf5, 0xdb, 0xad, 0xb3, 0x78, 0xb3, 0xc9, 0x7b, 0x58,
	0x38, 0x69, 0x79, 0x44, 0xbf, 0x55, 0xa8, 0xc9, 0x72, 0xa8, 0x0e, 0x6a, 0x30, 0xcd, 0x29, 0xd5,
	0x60, 0x8a, 0x34, 0xa8, 0xc4, 0x6e, 0x1a, 0x12, 0x77, 0x9a, 0xcf, 0x77, 0xbd, 0x44, 0x5d, 0xa8,
	0xf1, 0xfb, 0x32, 0xa6, 0x64, 0x99, 0x78, 0x58, 0xdb, 0xe5, 0x92, 0xcf, 0x0d, 0x0e, 0x1a, 0xd2,
	0x71, 0xee, 0xfd, 0x35, 0x3f, 0xed, 0xd8, 0x55, 0xee, 0x1e, 0xf1, 0x14, 0xd4, 0x87, 0x7d, 0x71,
	0x11, 0xd6, 0x1c, 0x7b, 0x9c, 0xe3, 0x85, 0x21, 0xd0, 0x07, 0x49, 0x6a, 0xc2, 0x9f, 0xb3, 0x5c,
	0x41, 0x53, 0x14, 0x32, 0xc5, 0x94, 0x05, 0x91, 0x9b, 0x05, 0x69, 0xe5, 0x47, 0x54, 0xa3, 0xd8,
	0x0d, 0xee, 0xee, 0xdf, 0xe5, 0xa1, 0x21, 0xa0, 0xbc, 0x24, 0x99, 0xad, 0xf2, 0x98, 0xba, 0x14,
	0xbb, 0x29, 0xfc, 0x12, 0xdf, 0xc5, 0x13, 0x28, 0x8b, 0xbd, 0x5d, 0xec, 0x43, 0x55, 0xa2, 0x7c,
	0x7d, 0x05, 0x87, 0x85, 0x87, 0x1d, 0xe9, 0x70, 0x34, 0x18, 0x0e, 0x9c, 0x41, 0xf7, 0x7a, 0x3c,
	0x72, 0xba, 0x8e, 0x35, 0x76, 0xec, 0xee, 0x70, 0x74, 0x69, 0xd9, 0x8d, 0x1d, 0x04, 0x50, 0xfe,
	0xf2, 0xb9, 0xdf, 0x75, 0xac, 0x86, 0x92, 0xd9, 0x7d, 0xeb, 0xda, 0x72, 0xac, 0x86, 0xda, 0x9e,
	0xc1, 0xb3, 0x1b, 0x12, 0x05, 0x8c, 0x24, 0x1b, 0xc3, 0xbc, 0x85, 0x83, 0x02, 0x98, 0xa2, 0x23,
	0xc3, 0x27, 0xc4, 0x0f, 0xb1, 0xb1, 0x7e, 0x50, 0x0c, 0x2b, 0x7b, 0x3c, 0xf4, 0x97, 0x5b, 0x4e,
	0xfd, 0xa9, 0x32, 0x29, 0xf3, 0x94, 0xf3, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x61, 0xb8, 0x02,
	0x64, 0x95, 0x05, 0x00, 0x00,
}

var _ context.Context
var _ grpc.ClientConn

const _ = grpc.SupportPackageIsVersion4

type MonitorCrossConnectClient interface {
	MonitorCrossConnects(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (MonitorCrossConnect_MonitorCrossConnectsClient, error)
}

type monitorCrossConnectClient struct {
	cc *grpc.ClientConn
}

func NewMonitorCrossConnectClient(cc *grpc.ClientConn) MonitorCrossConnectClient {
	return &monitorCrossConnectClient{cc}
}

func (c *monitorCrossConnectClient) MonitorCrossConnects(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (MonitorCrossConnect_MonitorCrossConnectsClient, error) {
	stream, err := c.cc.NewStream(ctx, &_MonitorCrossConnect_serviceDesc.Streams[0], "/crossconnect.MonitorCrossConnect/MonitorCrossConnects", opts...)
	if err != nil {
		return nil, err
	}
	x := &monitorCrossConnectMonitorCrossConnectsClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type MonitorCrossConnect_MonitorCrossConnectsClient interface {
	Recv() (*CrossConnectEvent, error)
	grpc.ClientStream
}

type monitorCrossConnectMonitorCrossConnectsClient struct {
	grpc.ClientStream
}

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

type MonitorCrossConnectServer interface {
	MonitorCrossConnects(*empty.Empty, MonitorCrossConnect_MonitorCrossConnectsServer) error
}

func RegisterMonitorCrossConnectServer(s *grpc.Server, srv MonitorCrossConnectServer) {
	s.RegisterService(&_MonitorCrossConnect_serviceDesc, srv)
}

func _MonitorCrossConnect_MonitorCrossConnects_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(empty.Empty)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(MonitorCrossConnectServer).MonitorCrossConnects(m, &monitorCrossConnectMonitorCrossConnectsServer{stream})
}

type MonitorCrossConnect_MonitorCrossConnectsServer interface {
	Send(*CrossConnectEvent) error
	grpc.ServerStream
}

type monitorCrossConnectMonitorCrossConnectsServer struct {
	grpc.ServerStream
}

func (x *monitorCrossConnectMonitorCrossConnectsServer) Send(m *CrossConnectEvent) error {
	return x.ServerStream.SendMsg(m)
}

var _MonitorCrossConnect_serviceDesc = grpc.ServiceDesc{
	ServiceName: "crossconnect.MonitorCrossConnect",
	HandlerType: (*MonitorCrossConnectServer)(nil),
	Methods:     []grpc.MethodDesc{},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "MonitorCrossConnects",
			Handler:       _MonitorCrossConnect_MonitorCrossConnects_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "crossconnect.proto",
}
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: crossconnect.proto

package crossconnect

import (
	context "context"
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	empty "github.com/golang/protobuf/ptypes/empty"
	connection "github.com/networkservicemesh/networkservicemesh/controlplane/pkg/apis/local/connection"
	connection1 "github.com/networkservicemesh/networkservicemesh/controlplane/pkg/apis/remote/connection"
	grpc "google.golang.org/grpc"
	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 CrossConnectEventType int32

const (
	CrossConnectEventType_INITIAL_STATE_TRANSFER CrossConnectEventType = 0
	CrossConnectEventType_UPDATE                 CrossConnectEventType = 1
	CrossConnectEventType_DELETE                 CrossConnectEventType = 2
)

var CrossConnectEventType_name = map[int32]string{
	0: "INITIAL_STATE_TRANSFER",
	1: "UPDATE",
	2: "DELETE",
}

var CrossConnectEventType_value = map[string]int32{
	"INITIAL_STATE_TRANSFER": 0,
	"UPDATE":                 1,
	"DELETE":                 2,
}

func (x CrossConnectEventType) String() string {
	return proto.EnumName(CrossConnectEventType_name, int32(x))
}

func (CrossConnectEventType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_97acf85fcaabb3f6, []int{0}
}

type Metrics struct {
	Metrics              map[string]string `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

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

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

var xxx_messageInfo_Metrics proto.InternalMessageInfo

func (m *Metrics) GetMetrics() map[string]string {
	if m != nil {
		return m.Metrics
	}
	return nil
}

type CrossConnectEvent struct {
	Type                 CrossConnectEventType    `protobuf:"varint,1,opt,name=type,proto3,enum=crossconnect.CrossConnectEventType" json:"type,omitempty"`
	CrossConnects        map[string]*CrossConnect `protobuf:"bytes,2,rep,name=cross_connects,json=crossConnects,proto3" json:"cross_connects,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Metrics              map[string]*Metrics      `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
	XXX_unrecognized     []byte                   `json:"-"`
	XXX_sizecache        int32                    `json:"-"`
}

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

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

var xxx_messageInfo_CrossConnectEvent proto.InternalMessageInfo

func (m *CrossConnectEvent) GetType() CrossConnectEventType {
	if m != nil {
		return m.Type
	}
	return CrossConnectEventType_INITIAL_STATE_TRANSFER
}

func (m *CrossConnectEvent) GetCrossConnects() map[string]*CrossConnect {
	if m != nil {
		return m.CrossConnects
	}
	return nil
}

func (m *CrossConnectEvent) GetMetrics() map[string]*Metrics {
	if m != nil {
		return m.Metrics
	}
	return nil
}

type CrossConnect struct {
	Id      string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Payload string `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
	// Types that are valid to be assigned to Source:
	//	*CrossConnect_LocalSource
	//	*CrossConnect_RemoteSource
	Source isCrossConnect_Source `protobuf_oneof:"source"`
	// Types that are valid to be assigned to Destination:
	//	*CrossConnect_LocalDestination
	//	*CrossConnect_RemoteDestination
	Destination          isCrossConnect_Destination `protobuf_oneof:"destination"`
	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
	XXX_unrecognized     []byte                     `json:"-"`
	XXX_sizecache        int32                      `json:"-"`
}

func (m *CrossConnect) Reset()         { *m = CrossConnect{} }
func (m *CrossConnect) String() string { return proto.CompactTextString(m) }
func (*CrossConnect) ProtoMessage()    {}
func (*CrossConnect) Descriptor() ([]byte, []int) {
	return fileDescriptor_97acf85fcaabb3f6, []int{2}
}

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

var xxx_messageInfo_CrossConnect proto.InternalMessageInfo

func (m *CrossConnect) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CrossConnect) GetPayload() string {
	if m != nil {
		return m.Payload
	}
	return ""
}

type isCrossConnect_Source interface {
	isCrossConnect_Source()
}

type CrossConnect_LocalSource struct {
	LocalSource *connection.Connection `protobuf:"bytes,4,opt,name=local_source,json=localSource,proto3,oneof"`
}

type CrossConnect_RemoteSource struct {
	RemoteSource *connection1.Connection `protobuf:"bytes,5,opt,name=remote_source,json=remoteSource,proto3,oneof"`
}

func (*CrossConnect_LocalSource) isCrossConnect_Source() {}

func (*CrossConnect_RemoteSource) isCrossConnect_Source() {}

func (m *CrossConnect) GetSource() isCrossConnect_Source {
	if m != nil {
		return m.Source
	}
	return nil
}

func (m *CrossConnect) GetLocalSource() *connection.Connection {
	if x, ok := m.GetSource().(*CrossConnect_LocalSource); ok {
		return x.LocalSource
	}
	return nil
}

func (m *CrossConnect) GetRemoteSource() *connection1.Connection {
	if x, ok := m.GetSource().(*CrossConnect_RemoteSource); ok {
		return x.RemoteSource
	}
	return nil
}

type isCrossConnect_Destination interface {
	isCrossConnect_Destination()
}

type CrossConnect_LocalDestination struct {
	LocalDestination *connection.Connection `protobuf:"bytes,6,opt,name=local_destination,json=localDestination,proto3,oneof"`
}

type CrossConnect_RemoteDestination struct {
	RemoteDestination *connection1.Connection `protobuf:"bytes,7,opt,name=remote_destination,json=remoteDestination,proto3,oneof"`
}

func (*CrossConnect_LocalDestination) isCrossConnect_Destination() {}

func (*CrossConnect_RemoteDestination) isCrossConnect_Destination() {}

func (m *CrossConnect) GetDestination() isCrossConnect_Destination {
	if m != nil {
		return m.Destination
	}
	return nil
}

func (m *CrossConnect) GetLocalDestination() *connection.Connection {
	if x, ok := m.GetDestination().(*CrossConnect_LocalDestination); ok {
		return x.LocalDestination
	}
	return nil
}

func (m *CrossConnect) GetRemoteDestination() *connection1.Connection {
	if x, ok := m.GetDestination().(*CrossConnect_RemoteDestination); ok {
		return x.RemoteDestination
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*CrossConnect) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*CrossConnect_LocalSource)(nil),
		(*CrossConnect_RemoteSource)(nil),
		(*CrossConnect_LocalDestination)(nil),
		(*CrossConnect_RemoteDestination)(nil),
	}
}

func init() {
	proto.RegisterEnum("crossconnect.CrossConnectEventType", CrossConnectEventType_name, CrossConnectEventType_value)
	proto.RegisterType((*Metrics)(nil), "crossconnect.Metrics")
	proto.RegisterMapType((map[string]string)(nil), "crossconnect.Metrics.MetricsEntry")
	proto.RegisterType((*CrossConnectEvent)(nil), "crossconnect.CrossConnectEvent")
	proto.RegisterMapType((map[string]*CrossConnect)(nil), "crossconnect.CrossConnectEvent.CrossConnectsEntry")
	proto.RegisterMapType((map[string]*Metrics)(nil), "crossconnect.CrossConnectEvent.MetricsEntry")
	proto.RegisterType((*CrossConnect)(nil), "crossconnect.CrossConnect")
}

func init() { proto.RegisterFile("crossconnect.proto", fileDescriptor_97acf85fcaabb3f6) }

var fileDescriptor_97acf85fcaabb3f6 = []byte{
	// 581 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x41, 0x6f, 0xd3, 0x30,
	0x14, 0x5e, 0xd2, 0xad, 0x85, 0xd7, 0xae, 0x6a, 0xcd, 0x36, 0x45, 0x11, 0x88, 0xa9, 0x5c, 0x26,
	0x40, 0xc9, 0xd6, 0x1d, 0x40, 0x15, 0x07, 0xba, 0x36, 0x13, 0xd5, 0xb6, 0x8a, 0xa5, 0xe1, 0x80,
	0x84, 0x54, 0xa5, 0xa9, 0x49, 0xa3, 0xa6, 0x71, 0x14, 0xbb, 0x45, 0x39, 0xf3, 0x47, 0xf8, 0x97,
	0x5c, 0x51, 0xec, 0x94, 0xb9, 0x5a, 0x46, 0x77, 0xe0, 0x92, 0x3c, 0x7f, 0xef, 0xbd, 0xef, 0x7b,
	0x7e, 0xcf, 0x36, 0x20, 0x2f, 0x21, 0x94, 0x7a, 0x24, 0x8a, 0xb0, 0xc7, 0x8c, 0x38, 0x21, 0x8c,
	0xa0, 0x9a, 0x8c, 0xe9, 0x33, 0x3f, 0x60, 0xb3, 0xe5, 0xc4, 0xf0, 0xc8, 0xc2, 0x8c, 0x30, 0xfb,
	0x41, 0x92, 0x39, 0xc5, 0xc9, 0x2a, 0xf0, 0xf0, 0x02, 0xd3, 0x59, 0x11, 0xe4, 0x91, 0x88, 0x25,
	0x24, 0x8c, 0x43, 0x37, 0xc2, 0x66, 0x3c, 0xf7, 0x4d, 0x37, 0x0e, 0xa8, 0x19, 0x12, 0xcf, 0x0d,
	0xcd, 0x9c, 0x35, 0x20, 0x91, 0x64, 0x0a, 0x5d, 0x3d, 0xf8, 0x4f, 0x4a, 0x09, 0x5e, 0x10, 0x86,
	0xff, 0x29, 0xd5, 0x91, 0xa4, 0x7c, 0x12, 0xba, 0x91, 0x6f, 0x72, 0xc7, 0x64, 0xf9, 0xfd, 0xe3,
	0xea, 0xcc, 0x38, 0x37, 0xce, 0xcc, 0x98, 0xa5, 0x31, 0xa6, 0x26, 0x5e, 0xc4, 0x2c, 0x15, 0x5f,
	0x91, 0xdb, 0xfa, 0xa9, 0x40, 0xe5, 0x06, 0xb3, 0x24, 0xf0, 0x28, 0xfa, 0x00, 0x95, 0x85, 0x30,
	0x35, 0xe5, 0xb8, 0x74, 0x52, 0x6d, 0xb7, 0x8c, 0x8d, 0x86, 0xe6, 0x71, 0xeb, 0xbf, 0x15, 0xb1,
	0x24, 0xb5, 0xd7, 0x29, 0x7a, 0x07, 0x6a, 0xb2, 0x03, 0x35, 0xa0, 0x34, 0xc7, 0xa9, 0xa6, 0x1c,
	0x2b, 0x27, 0x4f, 0xed, 0xcc, 0x44, 0x07, 0xb0, 0xb7, 0x72, 0xc3, 0x25, 0xd6, 0x54, 0x8e, 0x89,
	0x45, 0x47, 0x7d, 0xaf, 0xb4, 0x7e, 0x95, 0xa0, 0xd9, 0xcb, 0xa4, 0x7a, 0x42, 0xca, 0x5a, 0xe1,
	0x88, 0xa1, 0x77, 0xb0, 0x9b, 0x95, 0xcd, 0x29, 0xea, 0xed, 0x57, 0x9b, 0xc5, 0xdc, 0x0b, 0x77,
	0xd2, 0x18, 0xdb, 0x3c, 0x01, 0x7d, 0x85, 0x3a, 0x8f, 0x1d, 0xe7, 0xc1, 0x54, 0x53, 0xf9, 0x7e,
	0xda, 0x5b, 0x28, 0x36, 0x90, 0x7c, 0x7f, 0xfb, 0x9e, 0x8c, 0xa1, 0xcb, 0xbb, 0x1e, 0x95, 0x38,
	0xe7, 0xdb, 0x6d, 0x9c, 0xc5, 0xdd, 0xfa, 0x06, 0xe8, 0xbe, 0x58, 0x41, 0xcf, 0x4e, 0xe5, 0x9e,
	0x55, 0xdb, 0xfa, 0xc3, 0x6a, 0x52, 0x3f, 0xf5, 0xdb, 0xad, 0xb3, 0x78, 0xb3, 0xc9, 0x7b, 0x58,
	0x38, 0x69, 0x79, 0x44, 0xbf, 0x55, 0xa8, 0xc9, 0x72, 0xa8, 0x0e, 0x6a, 0x30, 0xcd, 0x29, 0xd5,
	0x60, 0x8a, 0x34, 0xa8, 0xc4, 0x6e, 0x1a, 0x12, 0x77, 0x9a, 0xcf, 0x77, 0xbd, 0x44, 0x5d, 0xa8,
	0xf1, 0xfb, 0x32, 0xa6, 0x64, 0x99, 0x78, 0x58, 0xdb, 0xe5, 0x92, 0xcf, 0x0d, 0x0e, 0x1a, 0xd2,
	0x71, 0xee, 0xfd, 0x35, 0x3f, 0xed, 0xd8, 0x55, 0xee, 0x1e, 0xf1, 0x14, 0xd4, 0x87, 0x7d, 0x71,
	0x11, 0xd6, 0x1c, 0x7b, 0x9c, 0xe3, 0x85, 0x21, 0xd0, 0x07, 0x49, 0x6a, 0xc2, 0x9f, 0xb3, 0x5c,
	0x41, 0x53, 0x14, 0x32, 0xc5, 0x94, 0x05, 0x91, 0x9b, 0x05, 0x69, 0xe5, 0x47, 0x54, 0xa3, 0xd8,
	0x0d, 0xee, 0xee, 0xdf, 0xe5, 0xa1, 0x21, 0xa0, 0xbc, 0x24, 0x99, 0xad, 0xf2, 0x98, 0xba, 0x14,
	0xbb, 0x29, 0xfc, 0x12, 0xdf, 0xc5, 0x13, 0x28, 0x8b, 0xbd, 0x5d, 0xec, 0x43, 0x55, 0xa2, 0x7c,
	0x7d, 0x05, 0x87, 0x85, 0x87, 0x1d, 0xe9, 0x70, 0x34, 0x18, 0x0e, 0x9c, 0x41, 0xf7, 0x7a, 0x3c,
	0x72, 0xba, 0x8e, 0x35, 0x76, 0xec, 0xee, 0x70, 0x74, 0x69, 0xd9, 0x8d, 0x1d, 0x04, 0x50, 0xfe,
	0xf2, 0xb9, 0xdf, 0x75, 0xac, 0x86, 0x92, 0xd9, 0x7d, 0xeb, 0xda, 0x72, 0xac, 0x86, 0xda, 0x9e,
	0xc1, 0xb3, 0x1b, 0x12, 0x05, 0x8c, 0x24, 0x1b, 0xc3, 0xbc, 0x85, 0x83, 0x02, 0x98, 0xa2, 0x23,
	0xc3, 0x27, 0xc4, 0x0f, 0xb1, 0xb1, 0x7e, 0x50, 0x0c, 0x2b, 0x7b, 0x3c, 0xf4, 0x97, 0x5b, 0x4e,
	0xfd, 0xa9, 0x32, 0x29, 0xf3, 0x94, 0xf3, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x61, 0xb8, 0x02,
	0x64, 0x95, 0x05, 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

// MonitorCrossConnectClient is the client API for MonitorCrossConnect service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type MonitorCrossConnectClient interface {
	MonitorCrossConnects(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (MonitorCrossConnect_MonitorCrossConnectsClient, error)
}

type monitorCrossConnectClient struct {
	cc *grpc.ClientConn
}

func NewMonitorCrossConnectClient(cc *grpc.ClientConn) MonitorCrossConnectClient {
	return &monitorCrossConnectClient{cc}
}

func (c *monitorCrossConnectClient) MonitorCrossConnects(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (MonitorCrossConnect_MonitorCrossConnectsClient, error) {
	stream, err := c.cc.NewStream(ctx, &_MonitorCrossConnect_serviceDesc.Streams[0], "/crossconnect.MonitorCrossConnect/MonitorCrossConnects", opts...)
	if err != nil {
		return nil, err
	}
	x := &monitorCrossConnectMonitorCrossConnectsClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type MonitorCrossConnect_MonitorCrossConnectsClient interface {
	Recv() (*CrossConnectEvent, error)
	grpc.ClientStream
}

type monitorCrossConnectMonitorCrossConnectsClient struct {
	grpc.ClientStream
}

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

// MonitorCrossConnectServer is the server API for MonitorCrossConnect service.
type MonitorCrossConnectServer interface {
	MonitorCrossConnects(*empty.Empty, MonitorCrossConnect_MonitorCrossConnectsServer) error
}

func RegisterMonitorCrossConnectServer(s *grpc.Server, srv MonitorCrossConnectServer) {
	s.RegisterService(&_MonitorCrossConnect_serviceDesc, srv)
}

func _MonitorCrossConnect_MonitorCrossConnects_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(empty.Empty)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(MonitorCrossConnectServer).MonitorCrossConnects(m, &monitorCrossConnectMonitorCrossConnectsServer{stream})
}

type MonitorCrossConnect_MonitorCrossConnectsServer interface {
	Send(*CrossConnectEvent) error
	grpc.ServerStream
}

type monitorCrossConnectMonitorCrossConnectsServer struct {
	grpc.ServerStream
}

func (x *monitorCrossConnectMonitorCrossConnectsServer) Send(m *CrossConnectEvent) error {
	return x.ServerStream.SendMsg(m)
}

var _MonitorCrossConnect_serviceDesc = grpc.ServiceDesc{
	ServiceName: "crossconnect.MonitorCrossConnect",
	HandlerType: (*MonitorCrossConnectServer)(nil),
	Methods:     []grpc.MethodDesc{},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "MonitorCrossConnects",
			Handler:       _MonitorCrossConnect_MonitorCrossConnects_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "crossconnect.proto",
}
