Client Methods
NewClient
The NewClient(tlsConfig *tls.Config, logger *zerolog.Logger) (*Client, error)
method is used to create a new fRPC client.
It takes two arguments:
tlsConfig
: a*tls.Config
that will be used to configure TLS for the underlying connection. This can be left asnil
if no TLS is required.logger
: a*zerolog.Logger
that will be used to log all events. This can be left asnil
if no logging is required.
It returns an fRPC *Client
on success and an error otherwise.
Connect
The Connect(addr string) error
method is used to initiate a connection to an fRPC server.
If a *tls.Config
was provided when the client was created (using NewClient
)
it will be used to configure TLS for the connection.
An error will be returned if the connection fails.
The Connect function should only be called once. If FromConn was already called on this client, Connect will return an error.
FromConn
The FromConn(conn net.Conn) error
method is used to create a new fRPC client from an existing net.Conn. This is useful if you want to reuse an existing connection, or
if you have a custom transport that you want to use. If a *tls.Config
was provided when the client was created (using NewClient
), it will be ignored.
An error will be returned if the connection fails.
The FromConn function should only be called once. If Connect was already called on this client, FromConn will return an error.”
Closed
The Closed() bool
method is used to check if the client is closed. This method will return true
if the client is closed or has not yet been initialized, and false
otherwise.
Error
The Error() error
method is used to check if the client has encountered an error. This method will return an error
if the client has encountered an error, or nil
otherwise.
This method is meant to be used to check if the client encountered an error that caused it to close.
Close
The Close() error
method is used to close the client. It will return an error
if the client encounters an error while closing (or if it is already closed), and will cancel any pending RPCs.
WritePacket
The WritePacket(p *packet.Packet) error
method is used to write a raw frisbee packet to the underlying connection. Normal fRPC operations should not use this method, however it is available
when extending fRPC with custom protocols or messaging patterns directly for use with the underlying Frisbee library.
Flush
The Flush() error
method is used to flush the underlying connection. Normal fRPC operations should not use this method, however it is available
when extending fRPC with custom protocols or messaging patterns directly for use with the underlying Frisbee library.
CloseChannel
The CloseChannel() <- chan struct{}
method is used to signal to a listener that the Client has been closed.
The returned channel will be closed when the client is closed, and the Error()
method can be used to check if the connection was closed due to an error.
Raw
The Raw() (net.Conn, error)
method is used to get the underlying net.Conn
from the fRPC Client. This is useful if you want to extend fRPC with custom protocols or messaging patterns directly for use with the underlying Frisbee library.
Logger
The Logger() *zerolog.Logger
method is used to get the logger that was provided when the client was created. This is useful if you want to extend fRPC with custom protocols or messaging patterns directly for use with the underlying Frisbee library.
Generated Methods
When generating the fRPC Client, each service in the .proto
file also results in a generated service
Client.
Then, for each RPC in the service, a method is generated on the appropriate the service
client.
For example, if the .proto
file contains the following service definition:
service MyService {
rpc MyMethod(MyRequest) returns (MyResponse) {}
}
Then the generated service
Client method is:
func (c *MyService) MyMethod(ctx context.Context, req *MyRequest) (res *MyResponse, err error) {
...
}
And it’s meant to be invoked using:
res, err := c.MyService.MyMethod(ctx, req)
Unlike gRPC, where each service requires creating a new RPC Client, fRPC creates a single client for all your services.