Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Unified Diff: service/datastore/serialize/invertible.go

Issue 2569923002: Split Buffer into WriteBuffer/ReadBuffer. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | service/datastore/serialize/serialize.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
}
« no previous file with comments | « no previous file | service/datastore/serialize/serialize.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698