Decouple github.com/jackc/chunkreader
This commit is contained in:
+2
-4
@@ -4,12 +4,11 @@ import (
|
|||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"github.com/jackc/chunkreader"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Backend struct {
|
type Backend struct {
|
||||||
cr *chunkreader.ChunkReader
|
cr ChunkReader
|
||||||
w io.Writer
|
w io.Writer
|
||||||
|
|
||||||
// Frontend message flyweights
|
// Frontend message flyweights
|
||||||
@@ -31,8 +30,7 @@ type Backend struct {
|
|||||||
partialMsg bool
|
partialMsg bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBackend(r io.Reader, w io.Writer) (*Backend, error) {
|
func NewBackend(cr ChunkReader, w io.Writer) (*Backend, error) {
|
||||||
cr := chunkreader.NewChunkReader(r)
|
|
||||||
return &Backend{cr: cr, w: w}, nil
|
return &Backend{cr: cr, w: w}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ func TestBackendReceiveInterrupted(t *testing.T) {
|
|||||||
server := &interruptReader{}
|
server := &interruptReader{}
|
||||||
server.push([]byte{'Q', 0, 0, 0, 6})
|
server.push([]byte{'Q', 0, 0, 0, 6})
|
||||||
|
|
||||||
backend, err := pgproto3.NewBackend(server, nil)
|
backend, err := pgproto3.NewBackend(pgproto3.NewChunkReader(server), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package pgproto3
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
|
||||||
|
"github.com/jackc/chunkreader"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ChunkReader is an interface to decouple github.com/jackc/chunkreader from this package.
|
||||||
|
type ChunkReader interface {
|
||||||
|
// Next returns buf filled with the next n bytes. If an error occurs, buf will be nil. Next must
|
||||||
|
// not reuse buf. In case of error, Next must preserve partially read data.
|
||||||
|
Next(n int) (buf []byte, err error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewChunkReader(r io.Reader) ChunkReader {
|
||||||
|
return chunkreader.NewChunkReader(r)
|
||||||
|
}
|
||||||
+2
-4
@@ -4,12 +4,11 @@ import (
|
|||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"github.com/jackc/chunkreader"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Frontend struct {
|
type Frontend struct {
|
||||||
cr *chunkreader.ChunkReader
|
cr ChunkReader
|
||||||
w io.Writer
|
w io.Writer
|
||||||
|
|
||||||
// Backend message flyweights
|
// Backend message flyweights
|
||||||
@@ -42,8 +41,7 @@ type Frontend struct {
|
|||||||
partialMsg bool
|
partialMsg bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewFrontend(r io.Reader, w io.Writer) (*Frontend, error) {
|
func NewFrontend(cr ChunkReader, w io.Writer) (*Frontend, error) {
|
||||||
cr := chunkreader.NewChunkReader(r)
|
|
||||||
return &Frontend{cr: cr, w: w}, nil
|
return &Frontend{cr: cr, w: w}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ func TestFrontendReceiveInterrupted(t *testing.T) {
|
|||||||
server := &interruptReader{}
|
server := &interruptReader{}
|
||||||
server.push([]byte{'Z', 0, 0, 0, 5})
|
server.push([]byte{'Z', 0, 0, 0, 5})
|
||||||
|
|
||||||
frontend, err := pgproto3.NewFrontend(server, nil)
|
frontend, err := pgproto3.NewFrontend(pgproto3.NewChunkReader(server), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user