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

/*
Package leveldb is a generated protocol buffer package.

It is generated from these files:
	leveldb.proto

It has these top-level messages:
	PutRequest
	PutReply
	GetRequest
	GetReply
	DeleteRequest
	DeleteReply
	BatchPutItem
	BatchPutRequest
	BatchPutReply
	IteratorRequest
	IteratorReply
*/
package leveldb

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 PutRequest struct {
	Key   []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

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

func (m *PutRequest) GetKey() []byte {
	if m != nil {
		return m.Key
	}
	return nil
}

func (m *PutRequest) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

type PutReply struct {
}

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

type GetRequest struct {
	Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
}

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

func (m *GetRequest) GetKey() []byte {
	if m != nil {
		return m.Key
	}
	return nil
}

type GetReply struct {
	Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
}

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

func (m *GetReply) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

type DeleteRequest struct {
	Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
}

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

func (m *DeleteRequest) GetKey() []byte {
	if m != nil {
		return m.Key
	}
	return nil
}

type DeleteReply struct {
}

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

type BatchPutItem struct {
	Key   []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
	Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
}

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

func (m *BatchPutItem) GetKey() []byte {
	if m != nil {
		return m.Key
	}
	return nil
}

func (m *BatchPutItem) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

type BatchPutRequest struct {
	Items []*BatchPutItem `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
}

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

func (m *BatchPutRequest) GetItems() []*BatchPutItem {
	if m != nil {
		return m.Items
	}
	return nil
}

type BatchPutReply struct {
}

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

type IteratorRequest struct {
	Gte     []byte `protobuf:"bytes,1,opt,name=gte,proto3" json:"gte,omitempty"`
	Lte     []byte `protobuf:"bytes,2,opt,name=lte,proto3" json:"lte,omitempty"`
	Limit   int32  `protobuf:"zigzag32,3,opt,name=limit" json:"limit,omitempty"`
	Reverse bool   `protobuf:"varint,4,opt,name=reverse" json:"reverse,omitempty"`
}

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

func (m *IteratorRequest) GetGte() []byte {
	if m != nil {
		return m.Gte
	}
	return nil
}

func (m *IteratorRequest) GetLte() []byte {
	if m != nil {
		return m.Lte
	}
	return nil
}

func (m *IteratorRequest) GetLimit() int32 {
	if m != nil {
		return m.Limit
	}
	return 0
}

func (m *IteratorRequest) GetReverse() bool {
	if m != nil {
		return m.Reverse
	}
	return false
}

type IteratorReply struct {
	Key   []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

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

func (m *IteratorReply) GetKey() []byte {
	if m != nil {
		return m.Key
	}
	return nil
}

func (m *IteratorReply) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

func init() {
	proto.RegisterType((*PutRequest)(nil), "PutRequest")
	proto.RegisterType((*PutReply)(nil), "PutReply")
	proto.RegisterType((*GetRequest)(nil), "GetRequest")
	proto.RegisterType((*GetReply)(nil), "GetReply")
	proto.RegisterType((*DeleteRequest)(nil), "DeleteRequest")
	proto.RegisterType((*DeleteReply)(nil), "DeleteReply")
	proto.RegisterType((*BatchPutItem)(nil), "BatchPutItem")
	proto.RegisterType((*BatchPutRequest)(nil), "BatchPutRequest")
	proto.RegisterType((*BatchPutReply)(nil), "BatchPutReply")
	proto.RegisterType((*IteratorRequest)(nil), "IteratorRequest")
	proto.RegisterType((*IteratorReply)(nil), "IteratorReply")
}

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

type LevelDBClient interface {
	Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetReply, error)
	Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutReply, error)
	Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteReply, error)
	BatchPut(ctx context.Context, in *BatchPutRequest, opts ...grpc.CallOption) (*BatchPutReply, error)
	Iterator(ctx context.Context, in *IteratorRequest, opts ...grpc.CallOption) (LevelDB_IteratorClient, error)
}

type levelDBClient struct {
	cc *grpc.ClientConn
}

func NewLevelDBClient(cc *grpc.ClientConn) LevelDBClient {
	return &levelDBClient{cc}
}

func (c *levelDBClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetReply, error) {
	out := new(GetReply)
	err := grpc.Invoke(ctx, "/LevelDB/Get", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *levelDBClient) Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutReply, error) {
	out := new(PutReply)
	err := grpc.Invoke(ctx, "/LevelDB/Put", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *levelDBClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteReply, error) {
	out := new(DeleteReply)
	err := grpc.Invoke(ctx, "/LevelDB/Delete", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *levelDBClient) BatchPut(ctx context.Context, in *BatchPutRequest, opts ...grpc.CallOption) (*BatchPutReply, error) {
	out := new(BatchPutReply)
	err := grpc.Invoke(ctx, "/LevelDB/BatchPut", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *levelDBClient) Iterator(ctx context.Context, in *IteratorRequest, opts ...grpc.CallOption) (LevelDB_IteratorClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_LevelDB_serviceDesc.Streams[0], c.cc, "/LevelDB/Iterator", opts...)
	if err != nil {
		return nil, err
	}
	x := &levelDBIteratorClient{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 LevelDB_IteratorClient interface {
	Recv() (*IteratorReply, error)
	grpc.ClientStream
}

type levelDBIteratorClient struct {
	grpc.ClientStream
}

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

// Server API for LevelDB service

type LevelDBServer interface {
	Get(context.Context, *GetRequest) (*GetReply, error)
	Put(context.Context, *PutRequest) (*PutReply, error)
	Delete(context.Context, *DeleteRequest) (*DeleteReply, error)
	BatchPut(context.Context, *BatchPutRequest) (*BatchPutReply, error)
	Iterator(*IteratorRequest, LevelDB_IteratorServer) error
}

func RegisterLevelDBServer(s *grpc.Server, srv LevelDBServer) {
	s.RegisterService(&_LevelDB_serviceDesc, srv)
}

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

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

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

func _LevelDB_BatchPut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(BatchPutRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(LevelDBServer).BatchPut(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/LevelDB/BatchPut",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(LevelDBServer).BatchPut(ctx, req.(*BatchPutRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _LevelDB_Iterator_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(IteratorRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(LevelDBServer).Iterator(m, &levelDBIteratorServer{stream})
}

type LevelDB_IteratorServer interface {
	Send(*IteratorReply) error
	grpc.ServerStream
}

type levelDBIteratorServer struct {
	grpc.ServerStream
}

func (x *levelDBIteratorServer) Send(m *IteratorReply) error {
	return x.ServerStream.SendMsg(m)
}

var _LevelDB_serviceDesc = grpc.ServiceDesc{
	ServiceName: "LevelDB",
	HandlerType: (*LevelDBServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Get",
			Handler:    _LevelDB_Get_Handler,
		},
		{
			MethodName: "Put",
			Handler:    _LevelDB_Put_Handler,
		},
		{
			MethodName: "Delete",
			Handler:    _LevelDB_Delete_Handler,
		},
		{
			MethodName: "BatchPut",
			Handler:    _LevelDB_BatchPut_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "Iterator",
			Handler:       _LevelDB_Iterator_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "leveldb.proto",
}

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

var fileDescriptor0 = []byte{
	// 341 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x52, 0xcd, 0x6a, 0xc2, 0x40,
	0x10, 0x66, 0x4d, 0xd5, 0xf8, 0x69, 0xd4, 0x2e, 0x3d, 0x84, 0x80, 0x25, 0x4d, 0xa1, 0x78, 0x28,
	0x4b, 0xb1, 0xc5, 0xde, 0x45, 0x10, 0xa1, 0x07, 0xc9, 0x1b, 0x68, 0x3b, 0xb4, 0xd2, 0x15, 0x6d,
	0x9c, 0x08, 0x3e, 0x64, 0xdf, 0xa9, 0x6c, 0xc2, 0x36, 0x89, 0x54, 0xe8, 0x6d, 0x66, 0x27, 0xf3,
	0xcd, 0xf7, 0x13, 0x78, 0x9a, 0x0e, 0xa4, 0xdf, 0x56, 0x6a, 0x97, 0x6c, 0x79, 0x1b, 0x3d, 0x01,
	0x8b, 0x94, 0x63, 0xfa, 0x4a, 0x69, 0xcf, 0xb2, 0x0f, 0xe7, 0x93, 0x8e, 0xbe, 0x08, 0xc5, 0xb0,
	0x13, 0x9b, 0x52, 0x5e, 0xa1, 0x7e, 0x58, 0xea, 0x94, 0xfc, 0x5a, 0xf6, 0x96, 0x37, 0x11, 0xe0,
	0x66, 0x5b, 0x3b, 0x7d, 0x8c, 0xae, 0x81, 0x19, 0x9d, 0x47, 0x88, 0x42, 0xb8, 0xd9, 0x7c, 0xa7,
	0x4b, 0x68, 0xa2, 0x8c, 0x76, 0x03, 0x6f, 0x4a, 0x9a, 0x98, 0xce, 0x83, 0x78, 0x68, 0xdb, 0x4f,
	0xcc, 0xcd, 0x31, 0x3a, 0x93, 0x25, 0xbf, 0x7e, 0x2c, 0x52, 0x9e, 0x33, 0x6d, 0xec, 0x42, 0xed,
	0x0f, 0xde, 0x4e, 0xf9, 0xd2, 0x18, 0x3d, 0xbb, 0x67, 0x6f, 0xdd, 0xa2, 0xbe, 0x66, 0xda, 0xec,
	0x7d, 0x11, 0x3a, 0xc3, 0xf6, 0xc8, 0x53, 0x65, 0xe0, 0x38, 0x9f, 0x45, 0x3d, 0x78, 0xc5, 0x9e,
	0x21, 0x40, 0xe8, 0xcd, 0x99, 0x92, 0x25, 0x6f, 0x93, 0x12, 0xe9, 0x77, 0xb6, 0xca, 0x4c, 0x69,
	0x5e, 0x34, 0x5b, 0xe7, 0x4c, 0x69, 0x58, 0xe9, 0xf5, 0x66, 0xcd, 0x19, 0xab, 0xcb, 0x38, 0x6f,
	0xa4, 0x8f, 0x66, 0x42, 0x07, 0x4a, 0xf6, 0xe4, 0x5f, 0x84, 0x62, 0xe8, 0xc6, 0xb6, 0x8d, 0x9e,
	0xe1, 0x15, 0x67, 0x8c, 0x81, 0xff, 0x0c, 0x68, 0xf4, 0x2d, 0xd0, 0x7c, 0x31, 0x41, 0x4f, 0x27,
	0x72, 0x00, 0x67, 0x46, 0x2c, 0xdb, 0xaa, 0x88, 0x29, 0x68, 0xa9, 0xdf, 0x4c, 0x06, 0x70, 0x16,
	0xa9, 0x19, 0x17, 0xa6, 0x04, 0x2d, 0x65, 0x95, 0xca, 0x3b, 0x34, 0x72, 0xe7, 0x65, 0x57, 0x55,
	0x52, 0x0a, 0x3a, 0xaa, 0x14, 0x89, 0xbc, 0x87, 0x6b, 0x2d, 0x92, 0x7d, 0x75, 0xe2, 0x72, 0xd0,
	0x55, 0x15, 0xff, 0xa4, 0x82, 0x6b, 0x85, 0xc9, 0xbe, 0x3a, 0xb1, 0x32, 0xe8, 0xaa, 0x8a, 0xea,
	0x07, 0xb1, 0x6a, 0x64, 0x7f, 0xeb, 0xe3, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7c, 0x2f, 0x3a,
	0x21, 0xbe, 0x02, 0x00, 0x00,
}
