Skip to content

Commit f05dac4

Browse files
internal: raw request sending functions
Auth requests are sent before connection event loop initialization. It would be useful to be able to send IPROTO_ID requests in the same way. Part of #120
1 parent 48cf0c7 commit f05dac4

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

Diff for: connection.go

+22-12
Original file line numberDiff line numberDiff line change
@@ -581,43 +581,53 @@ func pack(h *smallWBuf, enc *encoder, reqid uint32,
581581
return
582582
}
583583

584-
func (conn *Connection) writeAuthRequest(w *bufio.Writer, scramble []byte) (err error) {
584+
func (conn *Connection) writeRequest(w *bufio.Writer, req Request,
585+
reqName string) (err error) {
585586
var packet smallWBuf
586-
req := newAuthRequest(conn.opts.User, string(scramble))
587587
err = pack(&packet, newEncoder(&packet), 0, req, ignoreStreamId, conn.Schema)
588588

589589
if err != nil {
590-
return errors.New("auth: pack error " + err.Error())
590+
return errors.New(reqName + ": pack error " + err.Error())
591591
}
592592
if err := write(w, packet.b); err != nil {
593-
return errors.New("auth: write error " + err.Error())
593+
return errors.New(reqName + ": write error " + err.Error())
594594
}
595595
if err = w.Flush(); err != nil {
596-
return errors.New("auth: flush error " + err.Error())
596+
return errors.New(reqName + ": flush error " + err.Error())
597597
}
598598
return
599599
}
600600

601-
func (conn *Connection) readAuthResponse(r io.Reader) (err error) {
601+
func (conn *Connection) writeAuthRequest(w *bufio.Writer, scramble []byte) (err error) {
602+
req := newAuthRequest(conn.opts.User, string(scramble))
603+
return conn.writeRequest(w, req, "auth")
604+
}
605+
606+
func (conn *Connection) readResponse(r io.Reader) (resp Response, err error) {
602607
respBytes, err := conn.read(r)
603608
if err != nil {
604-
return errors.New("auth: read error " + err.Error())
609+
return resp, errors.New("auth: read error " + err.Error())
605610
}
606-
resp := Response{buf: smallBuf{b: respBytes}}
611+
resp = Response{buf: smallBuf{b: respBytes}}
607612
err = resp.decodeHeader(conn.dec)
608613
if err != nil {
609-
return errors.New("auth: decode response header error " + err.Error())
614+
return resp, errors.New("auth: decode response header error " + err.Error())
610615
}
611616
err = resp.decodeBody()
612617
if err != nil {
613618
switch err.(type) {
614619
case Error:
615-
return err
620+
return resp, err
616621
default:
617-
return errors.New("auth: decode response body error " + err.Error())
622+
return resp, errors.New("auth: decode response body error " + err.Error())
618623
}
619624
}
620-
return
625+
return resp, nil
626+
}
627+
628+
func (conn *Connection) readAuthResponse(r io.Reader) (err error) {
629+
_, err = conn.readResponse(r)
630+
return err
621631
}
622632

623633
func (conn *Connection) createConnection(reconnect bool) (err error) {

0 commit comments

Comments
 (0)