// Code generated by protoc-gen-go. DO NOT EDIT.
// source: route.proto

/*
Package route is a generated protocol buffer package.

It is generated from these files:
	route.proto

It has these top-level messages:
	Nil
	GetRouteRequest
	Route
	GetAllRoutesResponse
	Token
	TokenSet
	GetTokenRequest
	Backend
	BackendList
	BackendSelector
	BackendID
*/
package route

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

import (
	context "golang.org/x/net/context"
	grpc "google.golang.org/grpc"
)

// 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.ProtoPackageIsVersion2 // please upgrade the proto package

// Nil represents nothing.
type Nil struct {
}

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

// GetRouteRequest specifies the host or id of the route that the user wants
// to fetch.
type GetRouteRequest struct {
	Unused string `protobuf:"bytes,1,opt,name=unused" json:"unused,omitempty"`
	Id     string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
}

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

func (m *GetRouteRequest) GetUnused() string {
	if m != nil {
		return m.Unused
	}
	return ""
}

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

// Route is a single HTTP route.
type Route struct {
	Id      string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	Creator string `protobuf:"bytes,2,opt,name=creator" json:"creator,omitempty"`
	Host    string `protobuf:"bytes,3,opt,name=host" json:"host,omitempty"`
}

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

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

func (m *Route) GetCreator() string {
	if m != nil {
		return m.Creator
	}
	return ""
}

func (m *Route) GetHost() string {
	if m != nil {
		return m.Host
	}
	return ""
}

// GetAllRoutesResponse encapsulates a list of routes.
type GetAllRoutesResponse struct {
	Routes []*Route `protobuf:"bytes,1,rep,name=routes" json:"routes,omitempty"`
}

func (m *GetAllRoutesResponse) Reset()                    { *m = GetAllRoutesResponse{} }
func (m *GetAllRoutesResponse) String() string            { return proto.CompactTextString(m) }
func (*GetAllRoutesResponse) ProtoMessage()               {}
func (*GetAllRoutesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }

func (m *GetAllRoutesResponse) GetRoutes() []*Route {
	if m != nil {
		return m.Routes
	}
	return nil
}

// Token is an individual authentication token. Id and Body will usually be
// unique ID's or other cryptographic identifiers.
type Token struct {
	Id     string   `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	Body   string   `protobuf:"bytes,2,opt,name=body" json:"body,omitempty"`
	Scopes []string `protobuf:"bytes,3,rep,name=scopes" json:"scopes,omitempty"`
	Active bool     `protobuf:"varint,4,opt,name=active" json:"active,omitempty"`
}

func (m *Token) Reset()                    { *m = Token{} }
func (m *Token) String() string            { return proto.CompactTextString(m) }
func (*Token) ProtoMessage()               {}
func (*Token) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }

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

func (m *Token) GetBody() string {
	if m != nil {
		return m.Body
	}
	return ""
}

func (m *Token) GetScopes() []string {
	if m != nil {
		return m.Scopes
	}
	return nil
}

func (m *Token) GetActive() bool {
	if m != nil {
		return m.Active
	}
	return false
}

// Tokenset encapsulates a list of tokens.
type TokenSet struct {
	Tokens []*Token `protobuf:"bytes,1,rep,name=tokens" json:"tokens,omitempty"`
}

func (m *TokenSet) Reset()                    { *m = TokenSet{} }
func (m *TokenSet) String() string            { return proto.CompactTextString(m) }
func (*TokenSet) ProtoMessage()               {}
func (*TokenSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }

func (m *TokenSet) GetTokens() []*Token {
	if m != nil {
		return m.Tokens
	}
	return nil
}

type GetTokenRequest struct {
	Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"`
	Id    string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
}

func (m *GetTokenRequest) Reset()                    { *m = GetTokenRequest{} }
func (m *GetTokenRequest) String() string            { return proto.CompactTextString(m) }
func (*GetTokenRequest) ProtoMessage()               {}
func (*GetTokenRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }

func (m *GetTokenRequest) GetToken() string {
	if m != nil {
		return m.Token
	}
	return ""
}

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

type Backend struct {
	Id     string  `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	Proto  string  `protobuf:"bytes,2,opt,name=proto" json:"proto,omitempty"`
	User   string  `protobuf:"bytes,3,opt,name=user" json:"user,omitempty"`
	Domain string  `protobuf:"bytes,4,opt,name=domain" json:"domain,omitempty"`
	Phi    float32 `protobuf:"fixed32,5,opt,name=phi" json:"phi,omitempty"`
	Host   string  `protobuf:"bytes,6,opt,name=host" json:"host,omitempty"`
	Usable bool    `protobuf:"varint,7,opt,name=usable" json:"usable,omitempty"`
}

func (m *Backend) Reset()                    { *m = Backend{} }
func (m *Backend) String() string            { return proto.CompactTextString(m) }
func (*Backend) ProtoMessage()               {}
func (*Backend) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }

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

func (m *Backend) GetProto() string {
	if m != nil {
		return m.Proto
	}
	return ""
}

func (m *Backend) GetUser() string {
	if m != nil {
		return m.User
	}
	return ""
}

func (m *Backend) GetDomain() string {
	if m != nil {
		return m.Domain
	}
	return ""
}

func (m *Backend) GetPhi() float32 {
	if m != nil {
		return m.Phi
	}
	return 0
}

func (m *Backend) GetHost() string {
	if m != nil {
		return m.Host
	}
	return ""
}

func (m *Backend) GetUsable() bool {
	if m != nil {
		return m.Usable
	}
	return false
}

type BackendList struct {
	Bs       *BackendSelector `protobuf:"bytes,1,opt,name=bs" json:"bs,omitempty"`
	Backends []*Backend       `protobuf:"bytes,2,rep,name=backends" json:"backends,omitempty"`
}

func (m *BackendList) Reset()                    { *m = BackendList{} }
func (m *BackendList) String() string            { return proto.CompactTextString(m) }
func (*BackendList) ProtoMessage()               {}
func (*BackendList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }

func (m *BackendList) GetBs() *BackendSelector {
	if m != nil {
		return m.Bs
	}
	return nil
}

func (m *BackendList) GetBackends() []*Backend {
	if m != nil {
		return m.Backends
	}
	return nil
}

type BackendSelector struct {
	Domain string `protobuf:"bytes,1,opt,name=domain" json:"domain,omitempty"`
	User   string `protobuf:"bytes,2,opt,name=user" json:"user,omitempty"`
}

func (m *BackendSelector) Reset()                    { *m = BackendSelector{} }
func (m *BackendSelector) String() string            { return proto.CompactTextString(m) }
func (*BackendSelector) ProtoMessage()               {}
func (*BackendSelector) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }

func (m *BackendSelector) GetDomain() string {
	if m != nil {
		return m.Domain
	}
	return ""
}

func (m *BackendSelector) GetUser() string {
	if m != nil {
		return m.User
	}
	return ""
}

type BackendID struct {
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
}

func (m *BackendID) Reset()                    { *m = BackendID{} }
func (m *BackendID) String() string            { return proto.CompactTextString(m) }
func (*BackendID) ProtoMessage()               {}
func (*BackendID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }

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

func init() {
	proto.RegisterType((*Nil)(nil), "route.Nil")
	proto.RegisterType((*GetRouteRequest)(nil), "route.GetRouteRequest")
	proto.RegisterType((*Route)(nil), "route.Route")
	proto.RegisterType((*GetAllRoutesResponse)(nil), "route.GetAllRoutesResponse")
	proto.RegisterType((*Token)(nil), "route.Token")
	proto.RegisterType((*TokenSet)(nil), "route.TokenSet")
	proto.RegisterType((*GetTokenRequest)(nil), "route.GetTokenRequest")
	proto.RegisterType((*Backend)(nil), "route.Backend")
	proto.RegisterType((*BackendList)(nil), "route.BackendList")
	proto.RegisterType((*BackendSelector)(nil), "route.BackendSelector")
	proto.RegisterType((*BackendID)(nil), "route.BackendID")
}

// 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

// Client API for Routes service

type RoutesClient interface {
	// Get fetches a single route based on the Host or ID.
	Get(ctx context.Context, in *GetRouteRequest, opts ...grpc.CallOption) (*Route, error)
	// GetAll fetches all of the routes that the user owns.
	GetAll(ctx context.Context, in *Nil, opts ...grpc.CallOption) (*GetAllRoutesResponse, error)
	// Put creates a new route based on user-supplied details.
	Put(ctx context.Context, in *Route, opts ...grpc.CallOption) (*Route, error)
	// Delete removes a route.
	Delete(ctx context.Context, in *Route, opts ...grpc.CallOption) (*Nil, error)
}

type routesClient struct {
	cc *grpc.ClientConn
}

func NewRoutesClient(cc *grpc.ClientConn) RoutesClient {
	return &routesClient{cc}
}

func (c *routesClient) Get(ctx context.Context, in *GetRouteRequest, opts ...grpc.CallOption) (*Route, error) {
	out := new(Route)
	err := grpc.Invoke(ctx, "/route.Routes/Get", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *routesClient) GetAll(ctx context.Context, in *Nil, opts ...grpc.CallOption) (*GetAllRoutesResponse, error) {
	out := new(GetAllRoutesResponse)
	err := grpc.Invoke(ctx, "/route.Routes/GetAll", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *routesClient) Put(ctx context.Context, in *Route, opts ...grpc.CallOption) (*Route, error) {
	out := new(Route)
	err := grpc.Invoke(ctx, "/route.Routes/Put", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *routesClient) Delete(ctx context.Context, in *Route, opts ...grpc.CallOption) (*Nil, error) {
	out := new(Nil)
	err := grpc.Invoke(ctx, "/route.Routes/Delete", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for Routes service

type RoutesServer interface {
	// Get fetches a single route based on the Host or ID.
	Get(context.Context, *GetRouteRequest) (*Route, error)
	// GetAll fetches all of the routes that the user owns.
	GetAll(context.Context, *Nil) (*GetAllRoutesResponse, error)
	// Put creates a new route based on user-supplied details.
	Put(context.Context, *Route) (*Route, error)
	// Delete removes a route.
	Delete(context.Context, *Route) (*Nil, error)
}

func RegisterRoutesServer(s *grpc.Server, srv RoutesServer) {
	s.RegisterService(&_Routes_serviceDesc, srv)
}

func _Routes_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetRouteRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RoutesServer).Get(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Routes/Get",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RoutesServer).Get(ctx, req.(*GetRouteRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Routes_GetAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Nil)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RoutesServer).GetAll(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Routes/GetAll",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RoutesServer).GetAll(ctx, req.(*Nil))
	}
	return interceptor(ctx, in, info, handler)
}

func _Routes_Put_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Route)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RoutesServer).Put(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Routes/Put",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RoutesServer).Put(ctx, req.(*Route))
	}
	return interceptor(ctx, in, info, handler)
}

func _Routes_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Route)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(RoutesServer).Delete(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Routes/Delete",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(RoutesServer).Delete(ctx, req.(*Route))
	}
	return interceptor(ctx, in, info, handler)
}

var _Routes_serviceDesc = grpc.ServiceDesc{
	ServiceName: "route.Routes",
	HandlerType: (*RoutesServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Get",
			Handler:    _Routes_Get_Handler,
		},
		{
			MethodName: "GetAll",
			Handler:    _Routes_GetAll_Handler,
		},
		{
			MethodName: "Put",
			Handler:    _Routes_Put_Handler,
		},
		{
			MethodName: "Delete",
			Handler:    _Routes_Delete_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "route.proto",
}

// Client API for Tokens service

type TokensClient interface {
	Get(ctx context.Context, in *GetTokenRequest, opts ...grpc.CallOption) (*Token, error)
	GetAll(ctx context.Context, in *Nil, opts ...grpc.CallOption) (*TokenSet, error)
	Put(ctx context.Context, in *Token, opts ...grpc.CallOption) (*Token, error)
	Delete(ctx context.Context, in *Token, opts ...grpc.CallOption) (*Nil, error)
	Deactivate(ctx context.Context, in *Token, opts ...grpc.CallOption) (*Nil, error)
}

type tokensClient struct {
	cc *grpc.ClientConn
}

func NewTokensClient(cc *grpc.ClientConn) TokensClient {
	return &tokensClient{cc}
}

func (c *tokensClient) Get(ctx context.Context, in *GetTokenRequest, opts ...grpc.CallOption) (*Token, error) {
	out := new(Token)
	err := grpc.Invoke(ctx, "/route.Tokens/Get", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *tokensClient) GetAll(ctx context.Context, in *Nil, opts ...grpc.CallOption) (*TokenSet, error) {
	out := new(TokenSet)
	err := grpc.Invoke(ctx, "/route.Tokens/GetAll", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *tokensClient) Put(ctx context.Context, in *Token, opts ...grpc.CallOption) (*Token, error) {
	out := new(Token)
	err := grpc.Invoke(ctx, "/route.Tokens/Put", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *tokensClient) Delete(ctx context.Context, in *Token, opts ...grpc.CallOption) (*Nil, error) {
	out := new(Nil)
	err := grpc.Invoke(ctx, "/route.Tokens/Delete", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *tokensClient) Deactivate(ctx context.Context, in *Token, opts ...grpc.CallOption) (*Nil, error) {
	out := new(Nil)
	err := grpc.Invoke(ctx, "/route.Tokens/Deactivate", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for Tokens service

type TokensServer interface {
	Get(context.Context, *GetTokenRequest) (*Token, error)
	GetAll(context.Context, *Nil) (*TokenSet, error)
	Put(context.Context, *Token) (*Token, error)
	Delete(context.Context, *Token) (*Nil, error)
	Deactivate(context.Context, *Token) (*Nil, error)
}

func RegisterTokensServer(s *grpc.Server, srv TokensServer) {
	s.RegisterService(&_Tokens_serviceDesc, srv)
}

func _Tokens_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTokenRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TokensServer).Get(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Tokens/Get",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TokensServer).Get(ctx, req.(*GetTokenRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Tokens_GetAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Nil)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TokensServer).GetAll(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Tokens/GetAll",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TokensServer).GetAll(ctx, req.(*Nil))
	}
	return interceptor(ctx, in, info, handler)
}

func _Tokens_Put_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Token)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TokensServer).Put(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Tokens/Put",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TokensServer).Put(ctx, req.(*Token))
	}
	return interceptor(ctx, in, info, handler)
}

func _Tokens_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Token)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TokensServer).Delete(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Tokens/Delete",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TokensServer).Delete(ctx, req.(*Token))
	}
	return interceptor(ctx, in, info, handler)
}

func _Tokens_Deactivate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Token)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TokensServer).Deactivate(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Tokens/Deactivate",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TokensServer).Deactivate(ctx, req.(*Token))
	}
	return interceptor(ctx, in, info, handler)
}

var _Tokens_serviceDesc = grpc.ServiceDesc{
	ServiceName: "route.Tokens",
	HandlerType: (*TokensServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Get",
			Handler:    _Tokens_Get_Handler,
		},
		{
			MethodName: "GetAll",
			Handler:    _Tokens_GetAll_Handler,
		},
		{
			MethodName: "Put",
			Handler:    _Tokens_Put_Handler,
		},
		{
			MethodName: "Delete",
			Handler:    _Tokens_Delete_Handler,
		},
		{
			MethodName: "Deactivate",
			Handler:    _Tokens_Deactivate_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "route.proto",
}

// Client API for Backends service

type BackendsClient interface {
	List(ctx context.Context, in *BackendSelector, opts ...grpc.CallOption) (*BackendList, error)
	Kill(ctx context.Context, in *BackendID, opts ...grpc.CallOption) (*Nil, error)
}

type backendsClient struct {
	cc *grpc.ClientConn
}

func NewBackendsClient(cc *grpc.ClientConn) BackendsClient {
	return &backendsClient{cc}
}

func (c *backendsClient) List(ctx context.Context, in *BackendSelector, opts ...grpc.CallOption) (*BackendList, error) {
	out := new(BackendList)
	err := grpc.Invoke(ctx, "/route.Backends/List", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *backendsClient) Kill(ctx context.Context, in *BackendID, opts ...grpc.CallOption) (*Nil, error) {
	out := new(Nil)
	err := grpc.Invoke(ctx, "/route.Backends/Kill", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for Backends service

type BackendsServer interface {
	List(context.Context, *BackendSelector) (*BackendList, error)
	Kill(context.Context, *BackendID) (*Nil, error)
}

func RegisterBackendsServer(s *grpc.Server, srv BackendsServer) {
	s.RegisterService(&_Backends_serviceDesc, srv)
}

func _Backends_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(BackendSelector)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BackendsServer).List(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Backends/List",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BackendsServer).List(ctx, req.(*BackendSelector))
	}
	return interceptor(ctx, in, info, handler)
}

func _Backends_Kill_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(BackendID)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(BackendsServer).Kill(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/route.Backends/Kill",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(BackendsServer).Kill(ctx, req.(*BackendID))
	}
	return interceptor(ctx, in, info, handler)
}

var _Backends_serviceDesc = grpc.ServiceDesc{
	ServiceName: "route.Backends",
	HandlerType: (*BackendsServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "List",
			Handler:    _Backends_List_Handler,
		},
		{
			MethodName: "Kill",
			Handler:    _Backends_Kill_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "route.proto",
}

func init() { proto.RegisterFile("route.proto", fileDescriptor0) }

var fileDescriptor0 = []byte{
	// 556 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0xd1, 0x6a, 0xdb, 0x4a,
	0x10, 0xb5, 0x24, 0x4b, 0xb1, 0xc7, 0x97, 0x38, 0x0c, 0x26, 0x08, 0xe7, 0xc5, 0xec, 0x0d, 0xa9,
	0x29, 0x34, 0x14, 0xa7, 0x50, 0x0a, 0xed, 0x43, 0x8b, 0x8b, 0x09, 0x2d, 0xa1, 0xc8, 0x7d, 0xeb,
	0x93, 0x64, 0x0d, 0x58, 0x44, 0xf5, 0xba, 0xda, 0x55, 0xa1, 0x9f, 0xd2, 0x2f, 0xe9, 0x97, 0xf4,
	0x7f, 0xca, 0xce, 0xae, 0x63, 0xcb, 0x4a, 0xfb, 0x36, 0x33, 0x67, 0x76, 0x74, 0xce, 0xcc, 0x11,
	0x0c, 0x2a, 0x59, 0x6b, 0xba, 0xde, 0x56, 0x52, 0x4b, 0x0c, 0x39, 0x11, 0x21, 0x04, 0x77, 0x45,
	0x29, 0x5e, 0xc1, 0x70, 0x41, 0x3a, 0x31, 0xa5, 0x84, 0xbe, 0xd5, 0xa4, 0x34, 0x9e, 0x43, 0x54,
	0x6f, 0x6a, 0x45, 0x79, 0xec, 0x4d, 0xbc, 0x69, 0x3f, 0x71, 0x19, 0x9e, 0x82, 0x5f, 0xe4, 0xb1,
	0xcf, 0x35, 0xbf, 0xc8, 0xc5, 0x7b, 0x08, 0xf9, 0x9d, 0x03, 0xbc, 0x1d, 0x80, 0x31, 0x9c, 0xac,
	0x2a, 0x4a, 0xb5, 0xac, 0x5c, 0xf7, 0x2e, 0x45, 0x84, 0xee, 0x5a, 0x2a, 0x1d, 0x07, 0x5c, 0xe6,
	0x58, 0xbc, 0x86, 0xd1, 0x82, 0xf4, 0xdb, 0xb2, 0xe4, 0x61, 0x2a, 0x21, 0xb5, 0x95, 0x1b, 0x45,
	0x78, 0x09, 0x11, 0x33, 0x55, 0xb1, 0x37, 0x09, 0xa6, 0x83, 0xd9, 0x7f, 0xd7, 0x56, 0x85, 0xe5,
	0xea, 0x30, 0xf1, 0x05, 0xc2, 0xcf, 0xf2, 0x9e, 0x36, 0x2d, 0x12, 0x08, 0xdd, 0x4c, 0xe6, 0x3f,
	0x1c, 0x03, 0x8e, 0x8d, 0x32, 0xb5, 0x92, 0x5b, 0x52, 0x71, 0x30, 0x09, 0x8c, 0x32, 0x9b, 0x99,
	0x7a, 0xba, 0xd2, 0xc5, 0x77, 0x8a, 0xbb, 0x13, 0x6f, 0xda, 0x4b, 0x5c, 0x26, 0x9e, 0x43, 0x8f,
	0x87, 0x2f, 0x49, 0x1b, 0x3a, 0xda, 0xc4, 0xc7, 0x74, 0xb8, 0x21, 0x71, 0x98, 0x78, 0xc9, 0xeb,
	0xb4, 0x35, 0xb7, 0xce, 0x11, 0x84, 0x0c, 0x3a, 0x6e, 0x36, 0x69, 0x2d, 0xf3, 0xa7, 0x07, 0x27,
	0xef, 0xd2, 0xd5, 0x3d, 0x6d, 0xf2, 0x96, 0x94, 0x11, 0x84, 0x7c, 0x3a, 0xd7, 0x6e, 0x13, 0x23,
	0xb0, 0x56, 0x54, 0xed, 0x76, 0x69, 0x62, 0x23, 0x24, 0x97, 0x5f, 0xd3, 0x62, 0xc3, 0x42, 0xfa,
	0x89, 0xcb, 0xf0, 0x0c, 0x82, 0xed, 0xba, 0x88, 0xc3, 0x89, 0x37, 0xf5, 0x13, 0x13, 0x3e, 0x5c,
	0x22, 0xda, 0x5f, 0x82, 0x0f, 0xaf, 0xd2, 0xac, 0xa4, 0xf8, 0xc4, 0xae, 0xc1, 0x66, 0x22, 0x85,
	0x81, 0xa3, 0xf6, 0xb1, 0x50, 0x1a, 0xaf, 0xc0, 0xcf, 0x14, 0xd3, 0x1b, 0xcc, 0xce, 0xdd, 0x16,
	0x1c, 0xbe, 0xa4, 0x92, 0x56, 0x5a, 0x56, 0x89, 0x9f, 0x29, 0x7c, 0x0a, 0xbd, 0xcc, 0x96, 0x55,
	0xec, 0xf3, 0xce, 0x4e, 0x9b, 0xdd, 0xc9, 0x03, 0x2e, 0xde, 0xc0, 0xf0, 0x68, 0xc4, 0x81, 0x16,
	0xaf, 0xa1, 0x65, 0xa7, 0xdb, 0xdf, 0xeb, 0x16, 0x17, 0xd0, 0x77, 0xcf, 0x6f, 0xe7, 0xc7, 0xeb,
	0x9b, 0xfd, 0xf2, 0x20, 0xb2, 0xde, 0xc2, 0x67, 0x10, 0x2c, 0x48, 0xe3, 0x8e, 0xf5, 0x91, 0xf3,
	0xc7, 0x0d, 0x8b, 0x89, 0x0e, 0xde, 0x40, 0x64, 0xad, 0x89, 0xe0, 0x90, 0xbb, 0xa2, 0x1c, 0x5f,
	0xec, 0x5f, 0xb7, 0x5c, 0x2b, 0x3a, 0xf8, 0x3f, 0x04, 0x9f, 0x6a, 0x8d, 0x8d, 0x59, 0xad, 0xc9,
	0x97, 0x10, 0xcd, 0xa9, 0x24, 0x4d, 0x47, 0x7d, 0x07, 0xdf, 0x11, 0x9d, 0xd9, 0x6f, 0x0f, 0x22,
	0xf6, 0xd2, 0x63, 0xcc, 0x0f, 0x4d, 0x36, 0x6e, 0xb8, 0x51, 0x74, 0xf0, 0xc9, 0xa3, 0xcc, 0x87,
	0x87, 0x5d, 0x4b, 0xd2, 0x6d, 0xb6, 0x8c, 0xb4, 0xa6, 0xb5, 0xd9, 0xda, 0xbe, 0x06, 0x5b, 0x9c,
	0x02, 0xcc, 0x89, 0xff, 0x9c, 0xf4, 0xdf, 0x9d, 0xb3, 0x35, 0xf4, 0xdc, 0xb9, 0x14, 0xbe, 0x80,
	0x2e, 0xbb, 0xea, 0x2f, 0x4e, 0x1a, 0x63, 0xb3, 0x6e, 0x7a, 0x45, 0x07, 0xaf, 0xa0, 0xfb, 0xa1,
	0x28, 0x4b, 0x3c, 0x6b, 0xa2, 0xb7, 0xf3, 0xe6, 0x97, 0xb2, 0x88, 0xff, 0x95, 0x9b, 0x3f, 0x01,
	0x00, 0x00, 0xff, 0xff, 0x48, 0xf0, 0xaf, 0x88, 0x02, 0x05, 0x00, 0x00,
}
