Documentation ¶
Overview ¶
Package protorpc implements a protobuf-based ClientCodec and ServerCodec for the rpc package. Clients can make concurrent or asynchronous requests, and these are handled in whatever order the servers chooses.
All service methods take two protobuf message pointers: a request and a response. RPC service method strings, sequence numbers, and response errors are sent over the connection separately from the requests and responses.
Wire format: A request or response is encoded on the wire as a 32-bit length (in network byte order), followed by a marshalled protobuf for the header, followed by another 32-bit length, then a marshaled protobuf for the body. Separate length fields are used for framing because the protobuf encoding does not preserve message boundaries. Except for I/O errors, protobufs are encoded in pairs: first the header, then the request or response body.
Package protorpc is a generated protocol buffer package.
It is generated from these files:
protorpc.proto
It has these top-level messages:
ProtoRPCRequestHeader ProtoRPCResponseHeader
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrBadRequestType = errors.New("protorpc: bad request type") ErrMissingRequest = errors.New("protorpc: missing request") ErrBadResponseType = errors.New("protorpc: bad response type") ErrMissingResponse = errors.New("protorpc: missing response") )
Error types for the protorpc package.
Functions ¶
func NewClient ¶
func NewClient(conn io.ReadWriteCloser) *rpc.Client
NewClient returns a new rpc.Client to handle requests to the set of services at the other end of the connection.
func NewClientCodec ¶
func NewClientCodec(conn io.ReadWriteCloser) rpc.ClientCodec
NewClientCodec returns a new rpc.ClientCodec using protobuf messages on conn.
func NewServerCodec ¶
func NewServerCodec(conn io.ReadWriteCloser) rpc.ServerCodec
NewServerCodec returns a new rpc.ServerCodec using protobuf messages on conn.
Types ¶
type ProtoRPCRequestHeader ¶
type ProtoRPCRequestHeader struct { // The service method. Op *string `protobuf:"bytes,1,req,name=op" json:"op,omitempty"` // The sequence number. Seq *uint64 `protobuf:"varint,2,req,name=seq" json:"seq,omitempty"` XXX_unrecognized []byte `json:"-"` }
Protobuf RPC request header.
func (*ProtoRPCRequestHeader) GetOp ¶
func (m *ProtoRPCRequestHeader) GetOp() string
func (*ProtoRPCRequestHeader) GetSeq ¶
func (m *ProtoRPCRequestHeader) GetSeq() uint64
func (*ProtoRPCRequestHeader) ProtoMessage ¶
func (*ProtoRPCRequestHeader) ProtoMessage()
func (*ProtoRPCRequestHeader) Reset ¶
func (m *ProtoRPCRequestHeader) Reset()
func (*ProtoRPCRequestHeader) String ¶
func (m *ProtoRPCRequestHeader) String() string
type ProtoRPCResponseHeader ¶
type ProtoRPCResponseHeader struct { // The service method (matches request op). Op *string `protobuf:"bytes,1,req,name=op" json:"op,omitempty"` // The sequence number (matches request seq). Seq *uint64 `protobuf:"varint,2,req,name=seq" json:"seq,omitempty"` // The optional error string. Error *string `protobuf:"bytes,3,opt,name=error" json:"error,omitempty"` XXX_unrecognized []byte `json:"-"` }
Protobuf RPC response header.
func (*ProtoRPCResponseHeader) GetError ¶
func (m *ProtoRPCResponseHeader) GetError() string
func (*ProtoRPCResponseHeader) GetOp ¶
func (m *ProtoRPCResponseHeader) GetOp() string
func (*ProtoRPCResponseHeader) GetSeq ¶
func (m *ProtoRPCResponseHeader) GetSeq() uint64
func (*ProtoRPCResponseHeader) ProtoMessage ¶
func (*ProtoRPCResponseHeader) ProtoMessage()
func (*ProtoRPCResponseHeader) Reset ¶
func (m *ProtoRPCResponseHeader) Reset()
func (*ProtoRPCResponseHeader) String ¶
func (m *ProtoRPCResponseHeader) String() string