From 86fa5635ec2735f26f16e5cdf57eb7c3f93ea8e9 Mon Sep 17 00:00:00 2001 From: zhangyongding <54876819+zhangyongding@users.noreply.github.com> Date: Wed, 15 Jan 2025 11:37:04 +0800 Subject: [PATCH] client: Modify some interfaces to be exportable (#1936) * client: Client {} supports custom Transport * client: Modify some interfaces to be exportable --- client.go | 56 +++++++++++++++++++++++++++---------------------------- http.go | 2 +- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/client.go b/client.go index 7a3b3fe..dc0714b 100644 --- a/client.go +++ b/client.go @@ -1519,7 +1519,7 @@ func (c *HostClient) SetMaxConns(newMaxConns int) { c.connsLock.Unlock() } -func (c *HostClient) acquireConn(reqTimeout time.Duration, connectionClose bool) (cc *clientConn, err error) { +func (c *HostClient) AcquireConn(reqTimeout time.Duration, connectionClose bool) (cc *clientConn, err error) { createConn := false startCleaner := false @@ -1642,7 +1642,7 @@ func (c *HostClient) dialConnFor(w *wantConn) { cc := acquireClientConn(conn) if !w.tryDeliver(cc, nil) { // not delivered, return idle connection - c.releaseConn(cc) + c.ReleaseConn(cc) } } @@ -1660,7 +1660,7 @@ func (c *HostClient) CloseIdleConnections() { c.connsLock.Unlock() for _, cc := range scratch { - c.closeConn(cc) + c.CloseConn(cc) } } @@ -1701,7 +1701,7 @@ func (c *HostClient) connsCleaner() { // Close idle connections. for i, cc := range scratch { - c.closeConn(cc) + c.CloseConn(cc) scratch[i] = nil } @@ -1720,7 +1720,7 @@ func (c *HostClient) connsCleaner() { } } -func (c *HostClient) closeConn(cc *clientConn) { +func (c *HostClient) CloseConn(cc *clientConn) { c.decConnsCount() cc.c.Close() releaseClientConn(cc) @@ -1780,7 +1780,7 @@ func releaseClientConn(cc *clientConn) { var clientConnPool sync.Pool -func (c *HostClient) releaseConn(cc *clientConn) { +func (c *HostClient) ReleaseConn(cc *clientConn) { cc.lastUseTime = time.Now() if c.MaxConnWaitTimeout <= 0 { c.connsLock.Lock() @@ -1818,7 +1818,7 @@ func (c *HostClient) releaseConn(cc *clientConn) { } } -func (c *HostClient) acquireWriter(conn net.Conn) *bufio.Writer { +func (c *HostClient) AcquireWriter(conn net.Conn) *bufio.Writer { var v any if c.clientWriterPool != nil { v = c.clientWriterPool.Get() @@ -1845,7 +1845,7 @@ func (c *HostClient) acquireWriter(conn net.Conn) *bufio.Writer { return bw } -func (c *HostClient) releaseWriter(bw *bufio.Writer) { +func (c *HostClient) ReleaseWriter(bw *bufio.Writer) { if c.clientWriterPool != nil { c.clientWriterPool.Put(bw) } else { @@ -1853,7 +1853,7 @@ func (c *HostClient) releaseWriter(bw *bufio.Writer) { } } -func (c *HostClient) acquireReader(conn net.Conn) *bufio.Reader { +func (c *HostClient) AcquireReader(conn net.Conn) *bufio.Reader { var v any if c.clientReaderPool != nil { v = c.clientReaderPool.Get() @@ -1880,7 +1880,7 @@ func (c *HostClient) acquireReader(conn net.Conn) *bufio.Reader { return br } -func (c *HostClient) releaseReader(br *bufio.Reader) { +func (c *HostClient) ReleaseReader(br *bufio.Reader) { if c.clientReaderPool != nil { c.clientReaderPool.Put(br) } else { @@ -2145,7 +2145,7 @@ func (w *wantConn) cancel(c *HostClient, err error) { w.mu.Unlock() if conn != nil { - c.releaseConn(conn) + c.ReleaseConn(conn) } } @@ -2826,7 +2826,7 @@ func (c *pipelineConnClient) writer(conn net.Conn, stopCh <-chan struct{}) error continue } - w.resp.parseNetConn(conn) + w.resp.ParseNetConn(conn) if writeTimeout > 0 { // Set Deadline every time, since golang has fixed the performance issue @@ -2973,13 +2973,13 @@ func (t *transport) RoundTrip(hc *HostClient, req *Request, resp *Response) (ret deadline = time.Now().Add(req.timeout) } - cc, err := hc.acquireConn(req.timeout, req.ConnectionClose()) + cc, err := hc.AcquireConn(req.timeout, req.ConnectionClose()) if err != nil { return false, err } conn := cc.c - resp.parseNetConn(conn) + resp.ParseNetConn(conn) writeDeadline := deadline if hc.WriteTimeout > 0 { @@ -2990,7 +2990,7 @@ func (t *transport) RoundTrip(hc *HostClient, req *Request, resp *Response) (ret } if err = conn.SetWriteDeadline(writeDeadline); err != nil { - hc.closeConn(cc) + hc.CloseConn(cc) return true, err } @@ -3000,7 +3000,7 @@ func (t *transport) RoundTrip(hc *HostClient, req *Request, resp *Response) (ret resetConnection = true } - bw := hc.acquireWriter(conn) + bw := hc.AcquireWriter(conn) err = req.Write(bw) if resetConnection { @@ -3010,7 +3010,7 @@ func (t *transport) RoundTrip(hc *HostClient, req *Request, resp *Response) (ret if err == nil { err = bw.Flush() } - hc.releaseWriter(bw) + hc.ReleaseWriter(bw) // Return ErrTimeout on any timeout. if x, ok := err.(interface{ Timeout() bool }); ok && x.Timeout() { @@ -3018,7 +3018,7 @@ func (t *transport) RoundTrip(hc *HostClient, req *Request, resp *Response) (ret } if err != nil { - hc.closeConn(cc) + hc.CloseConn(cc) return true, err } @@ -3031,7 +3031,7 @@ func (t *transport) RoundTrip(hc *HostClient, req *Request, resp *Response) (ret } if err = conn.SetReadDeadline(readDeadline); err != nil { - hc.closeConn(cc) + hc.CloseConn(cc) return true, err } @@ -3042,11 +3042,11 @@ func (t *transport) RoundTrip(hc *HostClient, req *Request, resp *Response) (ret resp.Header.DisableNormalizing() } - br := hc.acquireReader(conn) + br := hc.AcquireReader(conn) err = resp.ReadLimitBody(br, hc.MaxResponseBodySize) if err != nil { - hc.releaseReader(br) - hc.closeConn(cc) + hc.ReleaseReader(br) + hc.CloseConn(cc) // Don't retry in case of ErrBodyTooLarge since we will just get the same again. needRetry := err != ErrBodyTooLarge return needRetry, err @@ -3056,25 +3056,25 @@ func (t *transport) RoundTrip(hc *HostClient, req *Request, resp *Response) (ret if customStreamBody && resp.bodyStream != nil { rbs := resp.bodyStream resp.bodyStream = newCloseReaderWithError(rbs, func(wErr error) error { - hc.releaseReader(br) + hc.ReleaseReader(br) if r, ok := rbs.(*requestStream); ok { releaseRequestStream(r) } if closeConn || resp.ConnectionClose() || wErr != nil { - hc.closeConn(cc) + hc.CloseConn(cc) } else { - hc.releaseConn(cc) + hc.ReleaseConn(cc) } return nil }) return false, nil } - hc.releaseReader(br) + hc.ReleaseReader(br) if closeConn { - hc.closeConn(cc) + hc.CloseConn(cc) } else { - hc.releaseConn(cc) + hc.ReleaseConn(cc) } return false, nil } diff --git a/http.go b/http.go index 99a8bdd..c15df1b 100644 --- a/http.go +++ b/http.go @@ -386,7 +386,7 @@ func (w *requestBodyWriter) Write(p []byte) (int, error) { return len(p), nil } -func (resp *Response) parseNetConn(conn net.Conn) { +func (resp *Response) ParseNetConn(conn net.Conn) { resp.raddr = conn.RemoteAddr() resp.laddr = conn.LocalAddr() }