Index: service/datastore/serialize/invertible.go |
diff --git a/service/datastore/serialize/invertible.go b/service/datastore/serialize/invertible.go |
index 1c798e13ae0dc712dff6096c0fe1faa86bcb060f..fd36291b62be695f182612bb25157c26ec0a2b0d 100644 |
--- a/service/datastore/serialize/invertible.go |
+++ b/service/datastore/serialize/invertible.go |
@@ -8,24 +8,34 @@ import ( |
"bytes" |
) |
-// Buffer is the interface which corresponds to the subset of *bytes.Buffer |
+// WriteBuffer is the interface which corresponds to the subset of *bytes.Buffer |
// that this package requires. |
-type Buffer interface { |
+type WriteBuffer interface { |
+ ReadBuffer |
+ |
String() string |
Bytes() []byte |
- Len() int |
Grow(int) |
- Read([]byte) (int, error) |
- ReadByte() (byte, error) |
- |
Write([]byte) (int, error) |
WriteByte(c byte) error |
WriteString(s string) (int, error) |
} |
-var _ Buffer = (*bytes.Buffer)(nil) |
+// ReadBuffer is the interface which corresponds to the subset of *bytes.Reader |
+// that this package requires. |
+type ReadBuffer interface { |
+ Len() int |
+ |
+ Read([]byte) (int, error) |
+ ReadByte() (byte, error) |
+} |
+ |
+var ( |
+ _ WriteBuffer = (*bytes.Buffer)(nil) |
+ _ ReadBuffer = (*bytes.Reader)(nil) |
+) |
// InvertibleBuffer is just like Buffer, except that it also has a stateful |
// Invert() method, which will cause all reads and writes to/from it to be |
@@ -48,22 +58,22 @@ var _ Buffer = (*bytes.Buffer)(nil) |
// If you know you need it, you'll know it's the right thing. If you're not sure |
// then you definitely don't need it! |
type InvertibleBuffer interface { |
- Buffer |
+ WriteBuffer |
SetInvert(inverted bool) |
} |
type invertibleBuffer struct { |
- Buffer |
+ WriteBuffer |
invert bool |
} |
// Invertible returns an InvertibleBuffer based on the Buffer. |
-func Invertible(b Buffer) InvertibleBuffer { |
+func Invertible(b WriteBuffer) InvertibleBuffer { |
return &invertibleBuffer{b, false} |
} |
func (ib *invertibleBuffer) Read(bs []byte) (int, error) { |
- n, err := ib.Buffer.Read(bs) |
+ n, err := ib.WriteBuffer.Read(bs) |
if ib.invert { |
for i, b := range bs { |
bs[i] = b ^ 0xFF |
@@ -76,37 +86,37 @@ func (ib *invertibleBuffer) WriteString(s string) (int, error) { |
if ib.invert { |
ib.Grow(len(s)) |
for i := 0; i < len(s); i++ { |
- if err := ib.Buffer.WriteByte(s[i] ^ 0xFF); err != nil { |
+ if err := ib.WriteBuffer.WriteByte(s[i] ^ 0xFF); err != nil { |
return i, err |
} |
} |
return len(s), nil |
} |
- return ib.Buffer.WriteString(s) |
+ return ib.WriteBuffer.WriteString(s) |
} |
func (ib *invertibleBuffer) Write(bs []byte) (int, error) { |
if ib.invert { |
ib.Grow(len(bs)) |
for i, b := range bs { |
- if err := ib.Buffer.WriteByte(b ^ 0xFF); err != nil { |
+ if err := ib.WriteBuffer.WriteByte(b ^ 0xFF); err != nil { |
return i, err |
} |
} |
return len(bs), nil |
} |
- return ib.Buffer.Write(bs) |
+ return ib.WriteBuffer.Write(bs) |
} |
func (ib *invertibleBuffer) WriteByte(b byte) error { |
if ib.invert { |
b = b ^ 0xFF |
} |
- return ib.Buffer.WriteByte(b) |
+ return ib.WriteBuffer.WriteByte(b) |
} |
func (ib *invertibleBuffer) ReadByte() (byte, error) { |
- ret, err := ib.Buffer.ReadByte() |
+ ret, err := ib.WriteBuffer.ReadByte() |
if ib.invert { |
ret = ret ^ 0xFF |
} |