go1.20.5
GoThrough

rpc.DefaultDebugPath

const DefaultDebugPath = "/debug/rpc"

rpc.DefaultRPCPath

// Defaults used by HandleHTTP const DefaultRPCPath = "/_goRPC_"

rpc.DefaultServer

// DefaultServer is the default instance of *Server. var DefaultServer = NewServer()

rpc.ErrShutdown

var ErrShutdown = errors.New("connection is shut down")

rpc.ClientCodec

// A ClientCodec implements writing of RPC requests and // reading of RPC responses for the client side of an RPC session. // The client calls WriteRequest to write a request to the connection // and calls ReadResponseHeader and ReadResponseBody in pairs // to read responses. The client calls Close when finished with the // connection. ReadResponseBody may be called with a nil // argument to force the body of the response to be read and then // discarded. // See NewClient's comment for information about concurrent access. type ClientCodec interface { WriteRequest(*Request, any) error ReadResponseHeader(*Response) error ReadResponseBody(any) error Close() error }

rpc.ServerCodec

// A ServerCodec implements reading of RPC requests and writing of // RPC responses for the server side of an RPC session. // The server calls ReadRequestHeader and ReadRequestBody in pairs // to read requests from the connection, and it calls WriteResponse to // write a response back. The server calls Close when finished with the // connection. ReadRequestBody may be called with a nil // argument to force the body of the request to be read and discarded. // See NewClient's comment for information about concurrent access. type ServerCodec interface { ReadRequestHeader(*Request) error ReadRequestBody(any) error WriteResponse(*Response, any) error // Close can be called multiple times and must be idempotent. Close() error }

rpc.Accept

// Accept accepts connections on the listener and serves requests // to DefaultServer for each incoming connection. // Accept blocks; the caller typically invokes it in a go statement. func Accept(lis net.Listener)

rpc.Dial

// Dial connects to an RPC server at the specified network address. func Dial(network string, address string) (*Client, error)

rpc.DialHTTP

// DialHTTP connects to an HTTP RPC server at the specified network address // listening on the default HTTP RPC path. func DialHTTP(network string, address string) (*Client, error)

rpc.DialHTTPPath

// DialHTTPPath connects to an HTTP RPC server // at the specified network address and path. func DialHTTPPath(network string, address string, path string) (*Client, error)

rpc.HandleHTTP

// HandleHTTP registers an HTTP handler for RPC messages to DefaultServer // on DefaultRPCPath and a debugging handler on DefaultDebugPath. // It is still necessary to invoke http.Serve(), typically in a go statement. func HandleHTTP()

rpc.NewClient

// NewClient returns a new Client to handle requests to the // set of services at the other end of the connection. // It adds a buffer to the write side of the connection so // the header and payload are sent as a unit. // // The read and write halves of the connection are serialized independently, // so no interlocking is required. However each half may be accessed // concurrently so the implementation of conn should protect against // concurrent reads or concurrent writes. func NewClient(conn io.ReadWriteCloser) *Client

rpc.NewClientWithCodec

// NewClientWithCodec is like NewClient but uses the specified // codec to encode requests and decode responses. func NewClientWithCodec(codec ClientCodec) *Client

rpc.NewServer

// NewServer returns a new Server. func NewServer() *Server

rpc.Register

// Register publishes the receiver's methods in the DefaultServer. func Register(rcvr any) error

rpc.RegisterName

// RegisterName is like Register but uses the provided name for the type // instead of the receiver's concrete type. func RegisterName(name string, rcvr any) error

rpc.ServeCodec

// ServeCodec is like ServeConn but uses the specified codec to // decode requests and encode responses. func ServeCodec(codec ServerCodec)

rpc.ServeConn

// ServeConn runs the DefaultServer on a single connection. // ServeConn blocks, serving the connection until the client hangs up. // The caller typically invokes ServeConn in a go statement. // ServeConn uses the gob wire format (see package gob) on the // connection. To use an alternate codec, use ServeCodec. // See NewClient's comment for information about concurrent access. func ServeConn(conn io.ReadWriteCloser)

rpc.ServeRequest

// ServeRequest is like ServeCodec but synchronously serves a single request. // It does not close the codec upon completion. func ServeRequest(codec ServerCodec) error