| // +build windows appengine |
| |
| package msgp |
| |
| import ( |
| "io/ioutil" |
| "os" |
| ) |
| |
| // MarshalSizer is the combination |
| // of the Marshaler and Sizer |
| // interfaces. |
| type MarshalSizer interface { |
| Marshaler |
| Sizer |
| } |
| |
| func ReadFile(dst Unmarshaler, file *os.File) error { |
| if u, ok := dst.(Decodable); ok { |
| return u.DecodeMsg(NewReader(file)) |
| } |
| |
| data, err := ioutil.ReadAll(file) |
| if err != nil { |
| return err |
| } |
| _, err = dst.UnmarshalMsg(data) |
| return err |
| } |
| |
| func WriteFile(src MarshalSizer, file *os.File) error { |
| if e, ok := src.(Encodable); ok { |
| w := NewWriter(file) |
| err := e.EncodeMsg(w) |
| if err == nil { |
| err = w.Flush() |
| } |
| return err |
| } |
| |
| raw, err := src.MarshalMsg(nil) |
| if err != nil { |
| return err |
| } |
| _, err = file.Write(raw) |
| return err |
| } |