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

/*
Package grpc_testingv3 is a generated protocol buffer package.

It is generated from these files:
	testv3.proto

It has these top-level messages:
	SearchResponseV3
	SearchRequestV3
*/
package grpc_testingv3

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

type SearchResponseV3 struct {
	Results []*SearchResponseV3_Result `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"`
}

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

func (m *SearchResponseV3) GetResults() []*SearchResponseV3_Result {
	if m != nil {
		return m.Results
	}
	return nil
}

type SearchResponseV3_Result struct {
	Url      string   `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
	Title    string   `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"`
	Snippets []string `protobuf:"bytes,3,rep,name=snippets" json:"snippets,omitempty"`
}

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

type SearchRequestV3 struct {
	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
}

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

func init() {
	proto.RegisterType((*SearchResponseV3)(nil), "grpc.testingv3.SearchResponseV3")
	proto.RegisterType((*SearchResponseV3_Result)(nil), "grpc.testingv3.SearchResponseV3.Result")
	proto.RegisterType((*SearchRequestV3)(nil), "grpc.testingv3.SearchRequestV3")
}

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

// Client API for SearchServiceV3 service

type SearchServiceV3Client interface {
	Search(ctx context.Context, in *SearchRequestV3, opts ...grpc.CallOption) (*SearchResponseV3, error)
	StreamingSearch(ctx context.Context, opts ...grpc.CallOption) (SearchServiceV3_StreamingSearchClient, error)
}

type searchServiceV3Client struct {
	cc *grpc.ClientConn
}

func NewSearchServiceV3Client(cc *grpc.ClientConn) SearchServiceV3Client {
	return &searchServiceV3Client{cc}
}

func (c *searchServiceV3Client) Search(ctx context.Context, in *SearchRequestV3, opts ...grpc.CallOption) (*SearchResponseV3, error) {
	out := new(SearchResponseV3)
	err := grpc.Invoke(ctx, "/grpc.testingv3.SearchServiceV3/Search", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *searchServiceV3Client) StreamingSearch(ctx context.Context, opts ...grpc.CallOption) (SearchServiceV3_StreamingSearchClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_SearchServiceV3_serviceDesc.Streams[0], c.cc, "/grpc.testingv3.SearchServiceV3/StreamingSearch", opts...)
	if err != nil {
		return nil, err
	}
	x := &searchServiceV3StreamingSearchClient{stream}
	return x, nil
}

type SearchServiceV3_StreamingSearchClient interface {
	Send(*SearchRequestV3) error
	Recv() (*SearchResponseV3, error)
	grpc.ClientStream
}

type searchServiceV3StreamingSearchClient struct {
	grpc.ClientStream
}

func (x *searchServiceV3StreamingSearchClient) Send(m *SearchRequestV3) error {
	return x.ClientStream.SendMsg(m)
}

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

// Server API for SearchServiceV3 service

type SearchServiceV3Server interface {
	Search(context.Context, *SearchRequestV3) (*SearchResponseV3, error)
	StreamingSearch(SearchServiceV3_StreamingSearchServer) error
}

func RegisterSearchServiceV3Server(s *grpc.Server, srv SearchServiceV3Server) {
	s.RegisterService(&_SearchServiceV3_serviceDesc, srv)
}

func _SearchServiceV3_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SearchRequestV3)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SearchServiceV3Server).Search(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/grpc.testingv3.SearchServiceV3/Search",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SearchServiceV3Server).Search(ctx, req.(*SearchRequestV3))
	}
	return interceptor(ctx, in, info, handler)
}

func _SearchServiceV3_StreamingSearch_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(SearchServiceV3Server).StreamingSearch(&searchServiceV3StreamingSearchServer{stream})
}

type SearchServiceV3_StreamingSearchServer interface {
	Send(*SearchResponseV3) error
	Recv() (*SearchRequestV3, error)
	grpc.ServerStream
}

type searchServiceV3StreamingSearchServer struct {
	grpc.ServerStream
}

func (x *searchServiceV3StreamingSearchServer) Send(m *SearchResponseV3) error {
	return x.ServerStream.SendMsg(m)
}

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

var _SearchServiceV3_serviceDesc = grpc.ServiceDesc{
	ServiceName: "grpc.testingv3.SearchServiceV3",
	HandlerType: (*SearchServiceV3Server)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Search",
			Handler:    _SearchServiceV3_Search_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "StreamingSearch",
			Handler:       _SearchServiceV3_StreamingSearch_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
	},
	Metadata: fileDescriptor0,
}

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

var fileDescriptor0 = []byte{
	// 240 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x91, 0x41, 0x4b, 0xc3, 0x40,
	0x10, 0x85, 0x59, 0x83, 0xd1, 0x8e, 0x62, 0xcb, 0xe2, 0x21, 0xe4, 0x62, 0xe8, 0xa5, 0x39, 0x2d,
	0xd2, 0xfd, 0x05, 0x9e, 0xf5, 0xb4, 0x81, 0xe2, 0xb5, 0x86, 0x21, 0x2e, 0xc4, 0x64, 0x3b, 0x33,
	0x09, 0xf8, 0x7b, 0xfc, 0x13, 0xfe, 0x3c, 0x49, 0xd2, 0x08, 0x0a, 0xe2, 0xa5, 0xb7, 0x7d, 0x8f,
	0xf7, 0xbe, 0xe5, 0x31, 0x70, 0x2d, 0xc8, 0xd2, 0x5b, 0x13, 0xa8, 0x95, 0x56, 0xdf, 0x54, 0x14,
	0x4a, 0x33, 0x58, 0xbe, 0xa9, 0x7a, 0xbb, 0xfe, 0x50, 0xb0, 0x2a, 0x70, 0x4f, 0xe5, 0xab, 0x43,
	0x0e, 0x6d, 0xc3, 0xb8, 0xb3, 0xfa, 0x01, 0x2e, 0x08, 0xb9, 0xab, 0x85, 0x13, 0x95, 0x45, 0xf9,
	0xd5, 0x76, 0x63, 0x7e, 0xd6, 0xcc, 0xef, 0x8a, 0x71, 0x63, 0xde, 0xcd, 0xbd, 0xf4, 0x09, 0xe2,
	0xc9, 0xd2, 0x2b, 0x88, 0x3a, 0xaa, 0x13, 0x95, 0xa9, 0x7c, 0xe1, 0x86, 0xa7, 0xbe, 0x85, 0x73,
	0xf1, 0x52, 0x63, 0x72, 0x36, 0x7a, 0x93, 0xd0, 0x29, 0x5c, 0x72, 0xe3, 0x43, 0x40, 0xe1, 0x24,
	0xca, 0xa2, 0x7c, 0xe1, 0xbe, 0xf5, 0x7a, 0x03, 0xcb, 0xf9, 0xc7, 0x43, 0x87, 0x2c, 0x3b, 0x3b,
	0x40, 0x0e, 0x1d, 0xd2, 0xfb, 0x11, 0x3c, 0x89, 0xed, 0xa7, 0x9a, 0x93, 0x05, 0x52, 0xef, 0xcb,
	0x61, 0xcd, 0x23, 0xc4, 0x93, 0xa5, 0xef, 0xfe, 0x9a, 0x71, 0x84, 0xa6, 0xd9, 0x7f, 0x3b, 0xf5,
	0x33, 0x2c, 0x0b, 0x21, 0xdc, 0xbf, 0xf9, 0xa6, 0x3a, 0x19, 0x35, 0x57, 0xf7, 0xea, 0x25, 0x1e,
	0x0f, 0x64, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd4, 0xe6, 0xa0, 0xf9, 0xb0, 0x01, 0x00, 0x00,
}
