diff --git a/conn-client.go b/conn-client.go index 8a83b2e6..d8c2a064 100644 --- a/conn-client.go +++ b/conn-client.go @@ -101,7 +101,7 @@ func (c *ConnClient) ReadFrameOrResponse(frame *InterleavedFrame) (interface{}, return frame, err } - return readResponse(c.br) + return ReadResponse(c.br) } // Do writes a Request and reads a Response. @@ -132,7 +132,7 @@ func (c *ConnClient) Do(req *Request) (*Response, error) { req.Header["CSeq"] = HeaderValue{strconv.FormatInt(int64(c.curCSeq), 10)} c.conf.Conn.SetWriteDeadline(time.Now().Add(c.conf.WriteTimeout)) - err := req.write(c.bw) + err := req.Write(c.bw) if err != nil { return nil, err } @@ -142,7 +142,7 @@ func (c *ConnClient) Do(req *Request) (*Response, error) { } c.conf.Conn.SetReadDeadline(time.Now().Add(c.conf.ReadTimeout)) - res, err := readResponse(c.br) + res, err := ReadResponse(c.br) if err != nil { return nil, err } diff --git a/conn-server.go b/conn-server.go index 4dcd2311..d2d90b52 100644 --- a/conn-server.go +++ b/conn-server.go @@ -56,7 +56,7 @@ func (s *ConnServer) NetConn() net.Conn { // ReadRequest reads a Request. func (s *ConnServer) ReadRequest() (*Request, error) { s.conf.Conn.SetReadDeadline(time.Time{}) // disable deadline - return readRequest(s.br) + return ReadRequest(s.br) } // ReadFrameOrRequest reads an InterleavedFrame or a Request. @@ -76,13 +76,13 @@ func (s *ConnServer) ReadFrameOrRequest(frame *InterleavedFrame) (interface{}, e return frame, err } - return readRequest(s.br) + return ReadRequest(s.br) } -// WriteResponse writes a response. +// WriteResponse writes a Response. func (s *ConnServer) WriteResponse(res *Response) error { s.conf.Conn.SetWriteDeadline(time.Now().Add(s.conf.WriteTimeout)) - return res.write(s.bw) + return res.Write(s.bw) } // WriteFrame writes an InterleavedFrame. diff --git a/request.go b/request.go index ac476d70..97968b9a 100644 --- a/request.go +++ b/request.go @@ -51,7 +51,8 @@ type Request struct { SkipResponse bool } -func readRequest(rb *bufio.Reader) (*Request, error) { +// ReadRequest reads a request from a buffered reader. +func ReadRequest(rb *bufio.Reader) (*Request, error) { req := &Request{} byts, err := readBytesLimited(rb, ' ', requestMaxLethodLength) @@ -112,7 +113,8 @@ func readRequest(rb *bufio.Reader) (*Request, error) { return req, nil } -func (req *Request) write(bw *bufio.Writer) error { +// Write writes a request into a buffered writer. +func (req *Request) Write(bw *bufio.Writer) error { // remove credentials u := &url.URL{ Scheme: req.Url.Scheme, diff --git a/request_test.go b/request_test.go index 923be4f4..67fdd025 100644 --- a/request_test.go +++ b/request_test.go @@ -117,7 +117,7 @@ var casesRequest = []struct { func TestRequestRead(t *testing.T) { for _, c := range casesRequest { t.Run(c.name, func(t *testing.T) { - req, err := readRequest(bufio.NewReader(bytes.NewBuffer(c.byts))) + req, err := ReadRequest(bufio.NewReader(bytes.NewBuffer(c.byts))) require.NoError(t, err) require.Equal(t, c.req, req) }) @@ -129,7 +129,7 @@ func TestRequestWrite(t *testing.T) { t.Run(c.name, func(t *testing.T) { var buf bytes.Buffer bw := bufio.NewWriter(&buf) - err := c.req.write(bw) + err := c.req.Write(bw) require.NoError(t, err) // do NOT call flush(), write() must have already done it require.Equal(t, c.byts, buf.Bytes()) diff --git a/response.go b/response.go index 44c1e841..e7061268 100644 --- a/response.go +++ b/response.go @@ -132,7 +132,8 @@ type Response struct { Content []byte } -func readResponse(rb *bufio.Reader) (*Response, error) { +// ReadResponse reads a response from a buffered reader. +func ReadResponse(rb *bufio.Reader) (*Response, error) { res := &Response{} byts, err := readBytesLimited(rb, ' ', 255) @@ -185,7 +186,8 @@ func readResponse(rb *bufio.Reader) (*Response, error) { return res, nil } -func (res *Response) write(bw *bufio.Writer) error { +// Write writes a Response into a buffered writer. +func (res *Response) Write(bw *bufio.Writer) error { if res.StatusMessage == "" { if status, ok := statusMessages[res.StatusCode]; ok { res.StatusMessage = status diff --git a/response_test.go b/response_test.go index dc184063..81a3c9e6 100644 --- a/response_test.go +++ b/response_test.go @@ -111,7 +111,7 @@ var casesResponse = []struct { func TestResponseRead(t *testing.T) { for _, c := range casesResponse { t.Run(c.name, func(t *testing.T) { - res, err := readResponse(bufio.NewReader(bytes.NewBuffer(c.byts))) + res, err := ReadResponse(bufio.NewReader(bytes.NewBuffer(c.byts))) require.NoError(t, err) require.Equal(t, c.res, res) }) @@ -123,7 +123,7 @@ func TestResponseWrite(t *testing.T) { t.Run(c.name, func(t *testing.T) { var buf bytes.Buffer bw := bufio.NewWriter(&buf) - err := c.res.write(bw) + err := c.res.Write(bw) require.NoError(t, err) // do NOT call flush(), write() must have already done it require.Equal(t, c.byts, buf.Bytes()) @@ -155,7 +155,7 @@ func TestResponseWriteStatusAutofill(t *testing.T) { var buf bytes.Buffer bw := bufio.NewWriter(&buf) - err := res.write(bw) + err := res.Write(bw) require.NoError(t, err) require.Equal(t, byts, buf.Bytes()) }