DB as a service
Fixes https://github.com/tendermint/tendermint/issues/1162
Databases as a service!
Can now access Databases as a remote service
via gRPC for performance and easy deployment.
The caveat is that each service is stateful in regards to
the DB i.e. each unique service uses only one unique DB
but nonetheless multiple clients can access it.
A full standalone example
```go
package main
import (
"bytes"
"context"
"log"
grpcdb "github.com/tendermint/tmlibs/grpcdb"
protodb "github.com/tendermint/tmlibs/proto"
)
func main() {
addr := ":8998"
go func() {
if err := grpcdb.BindRemoteDBServer(addr); err != nil {
log.Fatalf("BindRemoteDBServer: %v", err)
}
}()
client, err := grpcdb.NewClient(addr, false)
if err != nil {
log.Fatalf("Failed to create grpcDB client: %v", err)
}
ctx := context.Background()
// 1. Initialize the DB
in := &protodb.Init{
Type: "leveldb",
Name: "grpc-uno-test",
Dir: ".",
}
if _, err := client.Init(ctx, in); err != nil {
log.Fatalf("Init error: %v", err)
}
// 2. Now it can be used!
query1 := &protodb.Entity{Key: []byte("Project"), Value:
[]byte("Tmlibs-on-gRPC")}
if _, err := client.SetSync(ctx, query1); err != nil {
log.Fatalf("SetSync err: %v", err)
}
query2 := &protodb.Entity{Key: []byte("Project")}
read, err := client.Get(ctx, query2)
if err != nil {
log.Fatalf("Get err: %v", err)
}
if g, w := read.Value, []byte("Tmlibs-on-gRPC"); !bytes.Equal(g, w) {
log.Fatalf("got= (%q ==> % X)\nwant=(%q ==> % X)", g, g, w, w)
}
}
```
7 years ago |
|
- // Code generated by protoc-gen-go. DO NOT EDIT.
- // source: defs.proto
-
- /*
- Package protodb is a generated protocol buffer package.
-
- It is generated from these files:
- defs.proto
-
- It has these top-level messages:
- Entity
- Nothing
- DDomain
- Iterator
- Stats
- Init
- */
- package protodb
-
- 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 Entity struct {
- Id int32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
- Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
- Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
- Exists bool `protobuf:"varint,4,opt,name=exists" json:"exists,omitempty"`
- Start []byte `protobuf:"bytes,5,opt,name=start,proto3" json:"start,omitempty"`
- End []byte `protobuf:"bytes,6,opt,name=end,proto3" json:"end,omitempty"`
- Err string `protobuf:"bytes,7,opt,name=err" json:"err,omitempty"`
- Print string `protobuf:"bytes,8,opt,name=print" json:"print,omitempty"`
- TimeAt int64 `protobuf:"varint,9,opt,name=time_at,json=timeAt" json:"time_at,omitempty"`
- }
-
- func (m *Entity) Reset() { *m = Entity{} }
- func (m *Entity) String() string { return proto.CompactTextString(m) }
- func (*Entity) ProtoMessage() {}
- func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
- func (m *Entity) GetId() int32 {
- if m != nil {
- return m.Id
- }
- return 0
- }
-
- func (m *Entity) GetKey() []byte {
- if m != nil {
- return m.Key
- }
- return nil
- }
-
- func (m *Entity) GetValue() []byte {
- if m != nil {
- return m.Value
- }
- return nil
- }
-
- func (m *Entity) GetExists() bool {
- if m != nil {
- return m.Exists
- }
- return false
- }
-
- func (m *Entity) GetStart() []byte {
- if m != nil {
- return m.Start
- }
- return nil
- }
-
- func (m *Entity) GetEnd() []byte {
- if m != nil {
- return m.End
- }
- return nil
- }
-
- func (m *Entity) GetErr() string {
- if m != nil {
- return m.Err
- }
- return ""
- }
-
- func (m *Entity) GetPrint() string {
- if m != nil {
- return m.Print
- }
- return ""
- }
-
- func (m *Entity) GetTimeAt() int64 {
- if m != nil {
- return m.TimeAt
- }
- return 0
- }
-
- type Nothing struct {
- }
-
- func (m *Nothing) Reset() { *m = Nothing{} }
- func (m *Nothing) String() string { return proto.CompactTextString(m) }
- func (*Nothing) ProtoMessage() {}
- func (*Nothing) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
- type DDomain struct {
- Start []byte `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"`
- End []byte `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"`
- }
-
- func (m *DDomain) Reset() { *m = DDomain{} }
- func (m *DDomain) String() string { return proto.CompactTextString(m) }
- func (*DDomain) ProtoMessage() {}
- func (*DDomain) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
-
- func (m *DDomain) GetStart() []byte {
- if m != nil {
- return m.Start
- }
- return nil
- }
-
- func (m *DDomain) GetEnd() []byte {
- if m != nil {
- return m.End
- }
- return nil
- }
-
- type Iterator struct {
- Domain *DDomain `protobuf:"bytes,1,opt,name=domain" json:"domain,omitempty"`
- Valid bool `protobuf:"varint,2,opt,name=valid" json:"valid,omitempty"`
- Key []byte `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
- Value []byte `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"`
- }
-
- func (m *Iterator) Reset() { *m = Iterator{} }
- func (m *Iterator) String() string { return proto.CompactTextString(m) }
- func (*Iterator) ProtoMessage() {}
- func (*Iterator) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
-
- func (m *Iterator) GetDomain() *DDomain {
- if m != nil {
- return m.Domain
- }
- return nil
- }
-
- func (m *Iterator) GetValid() bool {
- if m != nil {
- return m.Valid
- }
- return false
- }
-
- func (m *Iterator) GetKey() []byte {
- if m != nil {
- return m.Key
- }
- return nil
- }
-
- func (m *Iterator) GetValue() []byte {
- if m != nil {
- return m.Value
- }
- return nil
- }
-
- type Stats struct {
- Data map[string]string `protobuf:"bytes,1,rep,name=data" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
- TimeAt int64 `protobuf:"varint,2,opt,name=time_at,json=timeAt" json:"time_at,omitempty"`
- }
-
- func (m *Stats) Reset() { *m = Stats{} }
- func (m *Stats) String() string { return proto.CompactTextString(m) }
- func (*Stats) ProtoMessage() {}
- func (*Stats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
-
- func (m *Stats) GetData() map[string]string {
- if m != nil {
- return m.Data
- }
- return nil
- }
-
- func (m *Stats) GetTimeAt() int64 {
- if m != nil {
- return m.TimeAt
- }
- return 0
- }
-
- type Init struct {
- Type string `protobuf:"bytes,1,opt,name=Type" json:"Type,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=Name" json:"Name,omitempty"`
- Dir string `protobuf:"bytes,3,opt,name=Dir" json:"Dir,omitempty"`
- }
-
- func (m *Init) Reset() { *m = Init{} }
- func (m *Init) String() string { return proto.CompactTextString(m) }
- func (*Init) ProtoMessage() {}
- func (*Init) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
-
- func (m *Init) GetType() string {
- if m != nil {
- return m.Type
- }
- return ""
- }
-
- func (m *Init) GetName() string {
- if m != nil {
- return m.Name
- }
- return ""
- }
-
- func (m *Init) GetDir() string {
- if m != nil {
- return m.Dir
- }
- return ""
- }
-
- func init() {
- proto.RegisterType((*Entity)(nil), "protodb.Entity")
- proto.RegisterType((*Nothing)(nil), "protodb.Nothing")
- proto.RegisterType((*DDomain)(nil), "protodb.DDomain")
- proto.RegisterType((*Iterator)(nil), "protodb.Iterator")
- proto.RegisterType((*Stats)(nil), "protodb.Stats")
- proto.RegisterType((*Init)(nil), "protodb.Init")
- }
-
- // 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 DB service
-
- type DBClient interface {
- Init(ctx context.Context, in *Init, opts ...grpc.CallOption) (*Entity, error)
- Get(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Entity, error)
- GetStream(ctx context.Context, opts ...grpc.CallOption) (DB_GetStreamClient, error)
- Has(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Entity, error)
- Set(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Nothing, error)
- SetSync(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Nothing, error)
- Delete(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Nothing, error)
- DeleteSync(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Nothing, error)
- Iterator(ctx context.Context, in *Entity, opts ...grpc.CallOption) (DB_IteratorClient, error)
- ReverseIterator(ctx context.Context, in *Entity, opts ...grpc.CallOption) (DB_ReverseIteratorClient, error)
- // rpc print(Nothing) returns (Entity) {}
- Stats(ctx context.Context, in *Nothing, opts ...grpc.CallOption) (*Stats, error)
- }
-
- type dBClient struct {
- cc *grpc.ClientConn
- }
-
- func NewDBClient(cc *grpc.ClientConn) DBClient {
- return &dBClient{cc}
- }
-
- func (c *dBClient) Init(ctx context.Context, in *Init, opts ...grpc.CallOption) (*Entity, error) {
- out := new(Entity)
- err := grpc.Invoke(ctx, "/protodb.DB/init", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
- }
-
- func (c *dBClient) Get(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Entity, error) {
- out := new(Entity)
- err := grpc.Invoke(ctx, "/protodb.DB/get", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
- }
-
- func (c *dBClient) GetStream(ctx context.Context, opts ...grpc.CallOption) (DB_GetStreamClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_DB_serviceDesc.Streams[0], c.cc, "/protodb.DB/getStream", opts...)
- if err != nil {
- return nil, err
- }
- x := &dBGetStreamClient{stream}
- return x, nil
- }
-
- type DB_GetStreamClient interface {
- Send(*Entity) error
- Recv() (*Entity, error)
- grpc.ClientStream
- }
-
- type dBGetStreamClient struct {
- grpc.ClientStream
- }
-
- func (x *dBGetStreamClient) Send(m *Entity) error {
- return x.ClientStream.SendMsg(m)
- }
-
- func (x *dBGetStreamClient) Recv() (*Entity, error) {
- m := new(Entity)
- if err := x.ClientStream.RecvMsg(m); err != nil {
- return nil, err
- }
- return m, nil
- }
-
- func (c *dBClient) Has(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Entity, error) {
- out := new(Entity)
- err := grpc.Invoke(ctx, "/protodb.DB/has", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
- }
-
- func (c *dBClient) Set(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Nothing, error) {
- out := new(Nothing)
- err := grpc.Invoke(ctx, "/protodb.DB/set", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
- }
-
- func (c *dBClient) SetSync(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Nothing, error) {
- out := new(Nothing)
- err := grpc.Invoke(ctx, "/protodb.DB/setSync", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
- }
-
- func (c *dBClient) Delete(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Nothing, error) {
- out := new(Nothing)
- err := grpc.Invoke(ctx, "/protodb.DB/delete", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
- }
-
- func (c *dBClient) DeleteSync(ctx context.Context, in *Entity, opts ...grpc.CallOption) (*Nothing, error) {
- out := new(Nothing)
- err := grpc.Invoke(ctx, "/protodb.DB/deleteSync", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
- }
-
- func (c *dBClient) Iterator(ctx context.Context, in *Entity, opts ...grpc.CallOption) (DB_IteratorClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_DB_serviceDesc.Streams[1], c.cc, "/protodb.DB/iterator", opts...)
- if err != nil {
- return nil, err
- }
- x := &dBIteratorClient{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 DB_IteratorClient interface {
- Recv() (*Iterator, error)
- grpc.ClientStream
- }
-
- type dBIteratorClient struct {
- grpc.ClientStream
- }
-
- func (x *dBIteratorClient) Recv() (*Iterator, error) {
- m := new(Iterator)
- if err := x.ClientStream.RecvMsg(m); err != nil {
- return nil, err
- }
- return m, nil
- }
-
- func (c *dBClient) ReverseIterator(ctx context.Context, in *Entity, opts ...grpc.CallOption) (DB_ReverseIteratorClient, error) {
- stream, err := grpc.NewClientStream(ctx, &_DB_serviceDesc.Streams[2], c.cc, "/protodb.DB/reverseIterator", opts...)
- if err != nil {
- return nil, err
- }
- x := &dBReverseIteratorClient{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 DB_ReverseIteratorClient interface {
- Recv() (*Iterator, error)
- grpc.ClientStream
- }
-
- type dBReverseIteratorClient struct {
- grpc.ClientStream
- }
-
- func (x *dBReverseIteratorClient) Recv() (*Iterator, error) {
- m := new(Iterator)
- if err := x.ClientStream.RecvMsg(m); err != nil {
- return nil, err
- }
- return m, nil
- }
-
- func (c *dBClient) Stats(ctx context.Context, in *Nothing, opts ...grpc.CallOption) (*Stats, error) {
- out := new(Stats)
- err := grpc.Invoke(ctx, "/protodb.DB/stats", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
- }
-
- // Server API for DB service
-
- type DBServer interface {
- Init(context.Context, *Init) (*Entity, error)
- Get(context.Context, *Entity) (*Entity, error)
- GetStream(DB_GetStreamServer) error
- Has(context.Context, *Entity) (*Entity, error)
- Set(context.Context, *Entity) (*Nothing, error)
- SetSync(context.Context, *Entity) (*Nothing, error)
- Delete(context.Context, *Entity) (*Nothing, error)
- DeleteSync(context.Context, *Entity) (*Nothing, error)
- Iterator(*Entity, DB_IteratorServer) error
- ReverseIterator(*Entity, DB_ReverseIteratorServer) error
- // rpc print(Nothing) returns (Entity) {}
- Stats(context.Context, *Nothing) (*Stats, error)
- }
-
- func RegisterDBServer(s *grpc.Server, srv DBServer) {
- s.RegisterService(&_DB_serviceDesc, srv)
- }
-
- func _DB_Init_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Init)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(DBServer).Init(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/protodb.DB/Init",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(DBServer).Init(ctx, req.(*Init))
- }
- return interceptor(ctx, in, info, handler)
- }
-
- func _DB_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Entity)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(DBServer).Get(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/protodb.DB/Get",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(DBServer).Get(ctx, req.(*Entity))
- }
- return interceptor(ctx, in, info, handler)
- }
-
- func _DB_GetStream_Handler(srv interface{}, stream grpc.ServerStream) error {
- return srv.(DBServer).GetStream(&dBGetStreamServer{stream})
- }
-
- type DB_GetStreamServer interface {
- Send(*Entity) error
- Recv() (*Entity, error)
- grpc.ServerStream
- }
-
- type dBGetStreamServer struct {
- grpc.ServerStream
- }
-
- func (x *dBGetStreamServer) Send(m *Entity) error {
- return x.ServerStream.SendMsg(m)
- }
-
- func (x *dBGetStreamServer) Recv() (*Entity, error) {
- m := new(Entity)
- if err := x.ServerStream.RecvMsg(m); err != nil {
- return nil, err
- }
- return m, nil
- }
-
- func _DB_Has_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Entity)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(DBServer).Has(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/protodb.DB/Has",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(DBServer).Has(ctx, req.(*Entity))
- }
- return interceptor(ctx, in, info, handler)
- }
-
- func _DB_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Entity)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(DBServer).Set(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/protodb.DB/Set",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(DBServer).Set(ctx, req.(*Entity))
- }
- return interceptor(ctx, in, info, handler)
- }
-
- func _DB_SetSync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Entity)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(DBServer).SetSync(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/protodb.DB/SetSync",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(DBServer).SetSync(ctx, req.(*Entity))
- }
- return interceptor(ctx, in, info, handler)
- }
-
- func _DB_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Entity)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(DBServer).Delete(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/protodb.DB/Delete",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(DBServer).Delete(ctx, req.(*Entity))
- }
- return interceptor(ctx, in, info, handler)
- }
-
- func _DB_DeleteSync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Entity)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(DBServer).DeleteSync(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/protodb.DB/DeleteSync",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(DBServer).DeleteSync(ctx, req.(*Entity))
- }
- return interceptor(ctx, in, info, handler)
- }
-
- func _DB_Iterator_Handler(srv interface{}, stream grpc.ServerStream) error {
- m := new(Entity)
- if err := stream.RecvMsg(m); err != nil {
- return err
- }
- return srv.(DBServer).Iterator(m, &dBIteratorServer{stream})
- }
-
- type DB_IteratorServer interface {
- Send(*Iterator) error
- grpc.ServerStream
- }
-
- type dBIteratorServer struct {
- grpc.ServerStream
- }
-
- func (x *dBIteratorServer) Send(m *Iterator) error {
- return x.ServerStream.SendMsg(m)
- }
-
- func _DB_ReverseIterator_Handler(srv interface{}, stream grpc.ServerStream) error {
- m := new(Entity)
- if err := stream.RecvMsg(m); err != nil {
- return err
- }
- return srv.(DBServer).ReverseIterator(m, &dBReverseIteratorServer{stream})
- }
-
- type DB_ReverseIteratorServer interface {
- Send(*Iterator) error
- grpc.ServerStream
- }
-
- type dBReverseIteratorServer struct {
- grpc.ServerStream
- }
-
- func (x *dBReverseIteratorServer) Send(m *Iterator) error {
- return x.ServerStream.SendMsg(m)
- }
-
- func _DB_Stats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(Nothing)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(DBServer).Stats(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/protodb.DB/Stats",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(DBServer).Stats(ctx, req.(*Nothing))
- }
- return interceptor(ctx, in, info, handler)
- }
-
- var _DB_serviceDesc = grpc.ServiceDesc{
- ServiceName: "protodb.DB",
- HandlerType: (*DBServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "init",
- Handler: _DB_Init_Handler,
- },
- {
- MethodName: "get",
- Handler: _DB_Get_Handler,
- },
- {
- MethodName: "has",
- Handler: _DB_Has_Handler,
- },
- {
- MethodName: "set",
- Handler: _DB_Set_Handler,
- },
- {
- MethodName: "setSync",
- Handler: _DB_SetSync_Handler,
- },
- {
- MethodName: "delete",
- Handler: _DB_Delete_Handler,
- },
- {
- MethodName: "deleteSync",
- Handler: _DB_DeleteSync_Handler,
- },
- {
- MethodName: "stats",
- Handler: _DB_Stats_Handler,
- },
- },
- Streams: []grpc.StreamDesc{
- {
- StreamName: "getStream",
- Handler: _DB_GetStream_Handler,
- ServerStreams: true,
- ClientStreams: true,
- },
- {
- StreamName: "iterator",
- Handler: _DB_Iterator_Handler,
- ServerStreams: true,
- },
- {
- StreamName: "reverseIterator",
- Handler: _DB_ReverseIterator_Handler,
- ServerStreams: true,
- },
- },
- Metadata: "defs.proto",
- }
-
- func init() { proto.RegisterFile("defs.proto", fileDescriptor0) }
-
- var fileDescriptor0 = []byte{
- // 498 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xcd, 0x72, 0xd3, 0x4c,
- 0x10, 0xf4, 0x4a, 0xb2, 0x64, 0x4d, 0xbe, 0x2f, 0x09, 0x5b, 0x14, 0x6c, 0xf9, 0xa4, 0xd2, 0x49,
- 0xfc, 0xb9, 0x12, 0xe7, 0xc0, 0xcf, 0x09, 0x28, 0xe7, 0xe0, 0x4b, 0x0e, 0x32, 0x77, 0x6a, 0x83,
- 0x06, 0x67, 0x8b, 0x58, 0x72, 0xed, 0x0e, 0x29, 0xf4, 0x04, 0x3c, 0x00, 0x4f, 0xc4, 0x9b, 0x51,
- 0xbb, 0xfa, 0xb1, 0x43, 0x7c, 0x10, 0x27, 0x4d, 0xef, 0x76, 0xf7, 0x8c, 0x5a, 0x23, 0x80, 0x02,
- 0xbf, 0x9a, 0xd9, 0x56, 0x57, 0x54, 0xf1, 0xc8, 0x3d, 0x8a, 0xeb, 0xf4, 0x37, 0x83, 0xf0, 0xb2,
- 0x24, 0x45, 0x35, 0x3f, 0x06, 0x4f, 0x15, 0x82, 0x25, 0x2c, 0x1b, 0xe7, 0x9e, 0x2a, 0xf8, 0x29,
- 0xf8, 0xdf, 0xb0, 0x16, 0x5e, 0xc2, 0xb2, 0xff, 0x72, 0x5b, 0xf2, 0xc7, 0x30, 0xbe, 0x93, 0xb7,
- 0xdf, 0x51, 0xf8, 0xee, 0xac, 0x01, 0xfc, 0x09, 0x84, 0xf8, 0x43, 0x19, 0x32, 0x22, 0x48, 0x58,
- 0x36, 0xc9, 0x5b, 0x64, 0xd9, 0x86, 0xa4, 0x26, 0x31, 0x6e, 0xd8, 0x0e, 0x58, 0x57, 0x2c, 0x0b,
- 0x11, 0x36, 0xae, 0x58, 0xba, 0x3e, 0xa8, 0xb5, 0x88, 0x12, 0x96, 0xc5, 0xb9, 0x2d, 0xad, 0x72,
- 0xab, 0x55, 0x49, 0x62, 0xe2, 0xce, 0x1a, 0xc0, 0x9f, 0x42, 0x44, 0x6a, 0x83, 0x9f, 0x25, 0x89,
- 0x38, 0x61, 0x99, 0x9f, 0x87, 0x16, 0x7e, 0xa0, 0x34, 0x86, 0xe8, 0xaa, 0xa2, 0x1b, 0x55, 0xae,
- 0xd3, 0x73, 0x88, 0x16, 0x8b, 0x6a, 0x23, 0x55, 0xb9, 0x6b, 0xcf, 0x0e, 0xb4, 0xf7, 0xfa, 0xf6,
- 0xa9, 0x86, 0xc9, 0x92, 0x50, 0x4b, 0xaa, 0x34, 0xcf, 0x20, 0x2c, 0x9c, 0xda, 0x89, 0x8e, 0xe6,
- 0xa7, 0xb3, 0x36, 0xa7, 0x59, 0xeb, 0x9a, 0xb7, 0xf7, 0x6d, 0x14, 0xaa, 0x71, 0x9a, 0xe4, 0x0d,
- 0xe8, 0x22, 0xf3, 0x0f, 0x44, 0x16, 0xec, 0x45, 0x96, 0xfe, 0x64, 0x30, 0x5e, 0x91, 0x24, 0xc3,
- 0x5f, 0x42, 0x50, 0x48, 0x92, 0x82, 0x25, 0x7e, 0x76, 0x34, 0x17, 0x7d, 0x3f, 0x77, 0x3b, 0x5b,
- 0x48, 0x92, 0x97, 0x25, 0xe9, 0x3a, 0x77, 0xac, 0xfd, 0x08, 0xbc, 0xfd, 0x08, 0xa6, 0xaf, 0x21,
- 0xee, 0xb9, 0xdd, 0x14, 0xac, 0x09, 0xf4, 0xde, 0x14, 0x5e, 0x13, 0xa8, 0x03, 0xef, 0xbc, 0x37,
- 0x2c, 0x7d, 0x0f, 0xc1, 0xb2, 0x54, 0xc4, 0x39, 0x04, 0x9f, 0xea, 0x2d, 0xb6, 0x22, 0x57, 0xdb,
- 0xb3, 0x2b, 0xb9, 0xe9, 0x44, 0xae, 0xb6, 0xde, 0x0b, 0xa5, 0xdd, 0x1b, 0xc6, 0xb9, 0x2d, 0xe7,
- 0xbf, 0x02, 0xf0, 0x16, 0x1f, 0x79, 0x06, 0x81, 0xb2, 0x46, 0xff, 0xf7, 0xaf, 0x60, 0x7d, 0xa7,
- 0x27, 0x3d, 0x6c, 0xb6, 0x2c, 0x1d, 0xf1, 0x67, 0xe0, 0xaf, 0x91, 0xf8, 0xdf, 0x37, 0x87, 0xa8,
- 0x17, 0x10, 0xaf, 0x91, 0x56, 0xa4, 0x51, 0x6e, 0x86, 0x08, 0x32, 0x76, 0xc6, 0xac, 0xff, 0x8d,
- 0x34, 0x83, 0xfc, 0x9f, 0x83, 0x6f, 0x0e, 0x8d, 0xb2, 0xfb, 0xee, 0xdd, 0x62, 0x8d, 0xf8, 0x0c,
- 0x22, 0x83, 0xb4, 0xaa, 0xcb, 0x2f, 0xc3, 0xf8, 0xaf, 0x20, 0x2c, 0xf0, 0x16, 0x09, 0x87, 0xd1,
- 0xcf, 0xed, 0xff, 0x69, 0xe9, 0xc3, 0x3b, 0xcc, 0x61, 0xa2, 0xba, 0xcd, 0x7d, 0x20, 0x78, 0xb4,
- 0xfb, 0x0e, 0x2d, 0x27, 0x1d, 0x9d, 0x31, 0xfe, 0x16, 0x4e, 0x34, 0xde, 0xa1, 0x36, 0xb8, 0xfc,
- 0x57, 0xe9, 0x0b, 0xf7, 0x43, 0x91, 0xe1, 0x0f, 0x66, 0x99, 0x1e, 0xdf, 0xdf, 0xdb, 0x74, 0x74,
- 0x1d, 0xba, 0x83, 0x8b, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf4, 0x2e, 0x77, 0x07, 0x75, 0x04,
- 0x00, 0x00,
- }
|