Mercurial > gemma
view misc/encode.go @ 339:33b59c848771
Factored out some miscellaneous code into own package.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sun, 05 Aug 2018 15:35:29 +0200 |
parents | auth/encode.go@f345edb409b2 |
children | 4c211ad5349e |
line wrap: on
line source
package misc import ( "encoding/binary" "io" ) type BinReader struct { R io.Reader Err error } func (r *BinReader) Read(x interface{}) { if r.Err == nil { r.Err = binary.Read(r.R, binary.BigEndian, x) } } func (r *BinReader) ReadString(s *string) { if r.Err != nil { return } var l uint32 if r.Err = binary.Read(r.R, binary.BigEndian, &l); r.Err != nil { return } b := make([]byte, l) if r.Err = binary.Read(r.R, binary.BigEndian, b); r.Err != nil { return } *s = string(b) } type BinWriter struct { W io.Writer Err error } func (w *BinWriter) Write(x interface{}) { if w.Err == nil { w.Err = binary.Write(w.W, binary.BigEndian, x) } } func (w *BinWriter) WriteString(s string) { if w.Err == nil { w.Err = binary.Write(w.W, binary.BigEndian, uint32(len(s))) } if w.Err == nil { w.Err = binary.Write(w.W, binary.BigEndian, []byte(s)) } }