rpc: Support specifying HTTP client in RPC dialing (#15836)
* rpc: Support specifying HTTP client in RPC dialing Adds a minimal interface that captures http.Client and adds a new method rpc.DialHTTPClient that takes a client using that interface. The existing rpc.DialHTTP method is then alternatively implemented by using the new rpc.DialHTTPClient method provided with a standard *http.Client. * rpc: fix minor doc typos
This commit is contained in:
parent
5c83a4e5dd
commit
952482d5e4
12
rpc/http.go
12
rpc/http.go
@ -65,8 +65,9 @@ func (hc *httpConn) Close() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DialHTTP creates a new RPC clients that connection to an RPC server over HTTP.
|
// DialHTTPWithClient creates a new RPC client that connects to an RPC server over HTTP
|
||||||
func DialHTTP(endpoint string) (*Client, error) {
|
// using the provided HTTP Client.
|
||||||
|
func DialHTTPWithClient(endpoint string, client *http.Client) (*Client, error) {
|
||||||
req, err := http.NewRequest(http.MethodPost, endpoint, nil)
|
req, err := http.NewRequest(http.MethodPost, endpoint, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -76,10 +77,15 @@ func DialHTTP(endpoint string) (*Client, error) {
|
|||||||
|
|
||||||
initctx := context.Background()
|
initctx := context.Background()
|
||||||
return newClient(initctx, func(context.Context) (net.Conn, error) {
|
return newClient(initctx, func(context.Context) (net.Conn, error) {
|
||||||
return &httpConn{client: new(http.Client), req: req, closed: make(chan struct{})}, nil
|
return &httpConn{client: client, req: req, closed: make(chan struct{})}, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DialHTTP creates a new RPC client that connects to an RPC server over HTTP.
|
||||||
|
func DialHTTP(endpoint string) (*Client, error) {
|
||||||
|
return DialHTTPWithClient(endpoint, new(http.Client))
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Client) sendHTTP(ctx context.Context, op *requestOp, msg interface{}) error {
|
func (c *Client) sendHTTP(ctx context.Context, op *requestOp, msg interface{}) error {
|
||||||
hc := c.writeConn.(*httpConn)
|
hc := c.writeConn.(*httpConn)
|
||||||
respBody, err := hc.doRequest(ctx, msg)
|
respBody, err := hc.doRequest(ctx, msg)
|
||||||
|
Loading…
Reference in New Issue
Block a user