view pkg/misc/encode.go @ 854:83c271cb2344

Reverted fcb38cedc680 (More tightened color model.) The get request did no longer work: HTTP/1.1 500 Internal Server Error Content-Type: text/plain; charset=utf-8 X-Content-Type-Options: nosniff Date: Fri, 28 Sep 2018 11:47:14 GMT Content-Length: 65 error: sql: Scan error on column index 3: Unexpected type string
author Sascha Wilde <wilde@intevation.de>
date Fri, 28 Sep 2018 13:54:57 +0200
parents f827dc4f3e95
children a244b18cb916
line wrap: on
line source

package misc

import (
	"encoding/binary"
	"io"
)

type BinReader struct {
	io.Reader
	Err error
}

func (r *BinReader) Read(buf []byte) (int, error) {
	if r.Err != nil {
		return 0, r.Err
	}
	var n int
	n, r.Err = r.Read(buf)
	return n, r.Err
}

func (r *BinReader) ReadBin(x interface{}) {
	if r.Err == nil {
		r.Err = binary.Read(r.Reader, binary.BigEndian, x)
	}
}

func (r *BinReader) ReadString(s *string) {
	if r.Err != nil {
		return
	}
	var l uint32
	if r.Err = binary.Read(r.Reader, binary.BigEndian, &l); r.Err != nil {
		return
	}
	b := make([]byte, l)
	if r.Err = binary.Read(r.Reader, binary.BigEndian, b); r.Err != nil {
		return
	}
	*s = string(b)
}

type BinWriter struct {
	io.Writer
	Err error
}

func (w *BinWriter) Write(buf []byte) (int, error) {
	if w.Err != nil {
		return 0, w.Err
	}
	var n int
	n, w.Err = w.Writer.Write(buf)
	return n, w.Err
}

func (w *BinWriter) WriteBin(x interface{}) {
	if w.Err == nil {
		w.Err = binary.Write(w.Writer, binary.BigEndian, x)
	}
}

func (w *BinWriter) WriteString(s string) {
	if w.Err == nil {
		w.Err = binary.Write(w.Writer, binary.BigEndian, uint32(len(s)))
	}
	if w.Err == nil {
		w.Err = binary.Write(w.Writer, binary.BigEndian, []byte(s))
	}
}