Started refactor to messageWriter

pgx-vs-pq
Jack Christensen 2013-07-09 17:22:30 -05:00
parent 84a9da28e2
commit 07b6385f1d
2 changed files with 50 additions and 32 deletions

View File

@ -219,27 +219,13 @@ func (c *Connection) SelectValues(sql string, arguments ...interface{}) (values
func (c *Connection) Prepare(name, sql string) (err error) {
// parse
buf := c.getBuf()
_, err = buf.WriteString(name)
if err != nil {
return
w := newMessageWriter(buf)
w.writeStringNull(name)
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)
if err != nil {
return
@ -247,18 +233,9 @@ func (c *Connection) Prepare(name, sql string) (err error) {
// describe
buf = c.getBuf()
err = buf.WriteByte('S')
if err != nil {
return
}
_, err = buf.WriteString(name)
if err != nil {
return
}
err = buf.WriteByte(0)
if err != nil {
return
}
w = newMessageWriter(buf)
w.writeByte('S')
w.writeStringNull(name)
err = c.txMsg('D', buf)
if err != nil {

41
message_writer.go Normal file
View File

@ -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)
}