github.com/stffabi/git-lfs@v2.3.5-0.20180214015214-8eeaa8d88902+incompatible/git/odb/object.go (about) 1 package odb 2 3 import "io" 4 5 // Object is an interface satisfied by any concrete type that represents a loose 6 // Git object. 7 type Object interface { 8 // Encode takes an io.Writer, "to", and encodes an uncompressed 9 // Git-compatible representation of itself to that stream. 10 // 11 // It must return "n", the number of uncompressed bytes written to that 12 // stream, along with "err", any error that was encountered during the 13 // write. 14 // 15 // Any error that was encountered should be treated as "fatal-local", 16 // meaning that a particular invocation of Encode() cannot progress, and 17 // an accurate number "n" of bytes written up that point should be 18 // returned. 19 Encode(to io.Writer) (n int, err error) 20 21 // Decode takes an io.Reader, "from" as well as a size "size" (the 22 // number of uncompressed bytes on the stream that represent the object 23 // trying to be decoded) and decodes the encoded object onto itself, 24 // as a mutative transaction. 25 // 26 // It returns the number of uncompressed bytes "n" that an invoication 27 // of this function has advanced the io.Reader, "from", as well as any 28 // error that was encountered along the way. 29 // 30 // If an(y) error was encountered, it should be returned immediately, 31 // along with the number of bytes read up to that point. 32 Decode(from io.Reader, size int64) (n int, err error) 33 34 // Type returns the ObjectType constant that represents an instance of 35 // the implementing type. 36 Type() ObjectType 37 }