FileSet deserialization (Read) uses its own instance of a gob decoder.
If the FileSet data may be followed by other data on the reader, Read
may consume too much data that is lost unless the reader implements
ReadByte.
Also: Minor internal refactoring for symmetry.
R=r
CC=golang-dev
https://golang.org/cl/
5233041
Files []serializedFile
}
+func (s *serializedFileSet) Read(r io.Reader) os.Error {
+ return gob.NewDecoder(r).Decode(s)
+}
+
+func (s *serializedFileSet) Write(w io.Writer) os.Error {
+ return gob.NewEncoder(w).Encode(s)
+}
+
// Read reads the fileset from r into s; s must not be nil.
+// If r does not also implement io.ByteReader, it will be wrapped in a bufio.Reader.
func (s *FileSet) Read(r io.Reader) os.Error {
var ss serializedFileSet
- if err := gob.NewDecoder(r).Decode(&ss); err != nil {
+ if err := ss.Read(r); err != nil {
return err
}
ss.Files = files
s.mutex.Unlock()
- return gob.NewEncoder(w).Encode(ss)
+ return ss.Write(w)
}