From 0add059776b0448c6ce568ed5a774db3780d7406 Mon Sep 17 00:00:00 2001 From: guzeng Date: Mon, 16 Aug 2021 20:23:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BB=BA=E7=AB=8B=E6=95=B0=E6=8D=AE=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- product.pb.go | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++ product.proto | 23 +++++++ 2 files changed, 206 insertions(+) create mode 100644 product.pb.go create mode 100644 product.proto diff --git a/product.pb.go b/product.pb.go new file mode 100644 index 0000000..0601c03 --- /dev/null +++ b/product.pb.go @@ -0,0 +1,183 @@ +// Code generated by protoc-gen-go. +// source: product.proto +// DO NOT EDIT! + +/* +Package productrpc is a generated protocol buffer package. + +It is generated from these files: + product.proto + +It has these top-level messages: + GetRequest + GetUuidRequest + GetResponse +*/ +package productrpc + +import proto "github.com/chai2010/protorpc/proto" +import math "math" + +import "io" +import "log" +import "net" +import "net/rpc" +import "time" +import protorpc "github.com/chai2010/protorpc" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = math.Inf + +// 使用key查询 +type GetRequest struct { + Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *GetRequest) Reset() { *m = GetRequest{} } +func (m *GetRequest) String() string { return proto.CompactTextString(m) } +func (*GetRequest) ProtoMessage() {} + +func (m *GetRequest) GetId() string { + if m != nil && m.Id != nil { + return *m.Id + } + return "" +} + +type GetUuidRequest struct { + Uuid *string `protobuf:"bytes,1,opt,name=uuid" json:"uuid,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *GetUuidRequest) Reset() { *m = GetUuidRequest{} } +func (m *GetUuidRequest) String() string { return proto.CompactTextString(m) } +func (*GetUuidRequest) ProtoMessage() {} + +func (m *GetUuidRequest) GetUuid() string { + if m != nil && m.Uuid != nil { + return *m.Uuid + } + return "" +} + +// 使用key查询响应结构 +type GetResponse struct { + Value []byte `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *GetResponse) Reset() { *m = GetResponse{} } +func (m *GetResponse) String() string { return proto.CompactTextString(m) } +func (*GetResponse) ProtoMessage() {} + +func (m *GetResponse) GetValue() []byte { + if m != nil { + return m.Value + } + return nil +} + +func init() { +} + +type ProductService interface { + Get(in *GetRequest, out *GetResponse) error + GetByUuid(in *GetUuidRequest, out *GetResponse) error +} + +// AcceptProductServiceClient accepts connections on the listener and serves requests +// for each incoming connection. Accept blocks; the caller typically +// invokes it in a go statement. +func AcceptProductServiceClient(lis net.Listener, x ProductService) { + srv := rpc.NewServer() + if err := srv.RegisterName("ProductService", x); err != nil { + log.Fatal(err) + } + + for { + conn, err := lis.Accept() + if err != nil { + log.Fatalf("lis.Accept(): %v\n", err) + } + go srv.ServeCodec(protorpc.NewServerCodec(conn)) + } +} + +// RegisterProductService publish the given ProductService implementation on the server. +func RegisterProductService(srv *rpc.Server, x ProductService) error { + if err := srv.RegisterName("ProductService", x); err != nil { + return err + } + return nil +} + +// NewProductServiceServer returns a new ProductService Server. +func NewProductServiceServer(x ProductService) *rpc.Server { + srv := rpc.NewServer() + if err := srv.RegisterName("ProductService", x); err != nil { + log.Fatal(err) + } + return srv +} + +// ListenAndServeProductService listen announces on the local network address laddr +// and serves the given ProductService implementation. +func ListenAndServeProductService(network, addr string, x ProductService) error { + lis, err := net.Listen(network, addr) + if err != nil { + return err + } + defer lis.Close() + + srv := rpc.NewServer() + if err := srv.RegisterName("ProductService", x); err != nil { + return err + } + + for { + conn, err := lis.Accept() + if err != nil { + log.Fatalf("lis.Accept(): %v\n", err) + } + go srv.ServeCodec(protorpc.NewServerCodec(conn)) + } +} + +type ProductServiceClient struct { + *rpc.Client +} + +// NewProductServiceClient returns a ProductService rpc.Client and stub to handle +// requests to the set of ProductService at the other end of the connection. +func NewProductServiceClient(conn io.ReadWriteCloser) (*ProductServiceClient, *rpc.Client) { + c := rpc.NewClientWithCodec(protorpc.NewClientCodec(conn)) + return &ProductServiceClient{c}, c +} + +func (c *ProductServiceClient) Get(in *GetRequest, out *GetResponse) error { + return c.Call("ProductService.Get", in, out) +} +func (c *ProductServiceClient) GetByUuid(in *GetUuidRequest, out *GetResponse) error { + return c.Call("ProductService.GetByUuid", in, out) +} + +// DialProductService connects to an ProductService at the specified network address. +func DialProductService(network, addr string) (*ProductServiceClient, *rpc.Client, error) { + c, err := protorpc.Dial(network, addr) + if err != nil { + return nil, nil, err + } + return &ProductServiceClient{c}, c, nil +} + +// DialProductServiceTimeout connects to an ProductService at the specified network address. +func DialProductServiceTimeout(network, addr string, + timeout time.Duration) (*ProductServiceClient, *rpc.Client, error) { + c, err := protorpc.DialTimeout(network, addr, timeout) + if err != nil { + return nil, nil, err + } + return &ProductServiceClient{c}, c, nil +} diff --git a/product.proto b/product.proto new file mode 100644 index 0000000..c09fca4 --- /dev/null +++ b/product.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; +package productrpc; + +// 使用key查询 +message GetRequest { + string id = 1; +} + +message GetUuidRequest { + string uuid = 1; +} + +// 使用key查询响应结构 +message GetResponse { + bytes value = 1; +} + + +// rpc方法 +service ProductService { + rpc Get (GetRequest) returns (GetResponse); // 使用id查询 + rpc GetByUuid (GetUuidRequest) returns (GetResponse); // 使用uuid查询 +} \ No newline at end of file