Started refactor to messageWriter
This commit is contained in:
+9
-32
@@ -219,27 +219,13 @@ func (c *Connection) SelectValues(sql string, arguments ...interface{}) (values
|
|||||||
func (c *Connection) Prepare(name, sql string) (err error) {
|
func (c *Connection) Prepare(name, sql string) (err error) {
|
||||||
// parse
|
// parse
|
||||||
buf := c.getBuf()
|
buf := c.getBuf()
|
||||||
_, err = buf.WriteString(name)
|
w := newMessageWriter(buf)
|
||||||
if err != nil {
|
w.writeStringNull(name)
|
||||||
return
|
w.writeStringNull(sql)
|
||||||
|
w.write(int16(0))
|
||||||
|
if w.err != nil {
|
||||||
|
return w.err
|
||||||
}
|
}
|
||||||
err = buf.WriteByte(0)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
_, err = buf.WriteString(sql)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = buf.WriteByte(0)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = binary.Write(buf, binary.BigEndian, int16(0))
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err = c.txMsg('P', buf)
|
err = c.txMsg('P', buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -247,18 +233,9 @@ func (c *Connection) Prepare(name, sql string) (err error) {
|
|||||||
|
|
||||||
// describe
|
// describe
|
||||||
buf = c.getBuf()
|
buf = c.getBuf()
|
||||||
err = buf.WriteByte('S')
|
w = newMessageWriter(buf)
|
||||||
if err != nil {
|
w.writeByte('S')
|
||||||
return
|
w.writeStringNull(name)
|
||||||
}
|
|
||||||
_, err = buf.WriteString(name)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = buf.WriteByte(0)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err = c.txMsg('D', buf)
|
err = c.txMsg('D', buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package pgx
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/binary"
|
||||||
|
)
|
||||||
|
|
||||||
|
type messageWriter struct {
|
||||||
|
buf *bytes.Buffer
|
||||||
|
err error
|
||||||
|
}
|
||||||
|
|
||||||
|
func newMessageWriter(buf *bytes.Buffer) *messageWriter {
|
||||||
|
return &messageWriter{buf: buf}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *messageWriter) writeStringNull(s string) {
|
||||||
|
if w.err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if _, w.err = w.buf.WriteString(s); w.err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
w.err = w.buf.WriteByte(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *messageWriter) writeByte(b byte) {
|
||||||
|
if w.err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.err = w.buf.WriteByte(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *messageWriter) write(data interface{}) {
|
||||||
|
if w.err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.err = binary.Write(w.buf, binary.BigEndian, data)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user