1
0
mirror of https://github.com/nxshock/zkv.git synced 2024-11-27 11:21:02 +05:00

Switch to GOB encoder

This commit is contained in:
nxshock 2022-02-16 16:38:50 +05:00
parent 11599b76b6
commit 916b50decd
2 changed files with 6 additions and 6 deletions

View File

@ -3,7 +3,7 @@ package zkv
import ( import (
"bytes" "bytes"
"encoding/binary" "encoding/binary"
"encoding/json" "encoding/gob"
"io" "io"
) )
@ -44,7 +44,7 @@ func newRecord(recordType RecordType, key, value interface{}) (*Record, error) {
func (r *Record) Marshal() ([]byte, error) { func (r *Record) Marshal() ([]byte, error) {
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
err := json.NewEncoder(buf).Encode(r) err := gob.NewEncoder(buf).Encode(r)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -73,7 +73,7 @@ func readRecord(r io.Reader) (n int64, record *Record, err error) {
return 0, nil, err // TODO: вместо нуля должно быть реальное кол-во считанных байт return 0, nil, err // TODO: вместо нуля должно быть реальное кол-во считанных байт
} }
err = json.NewDecoder(bytes.NewReader(recordBytes)).Decode(&record) err = gob.NewDecoder(bytes.NewReader(recordBytes)).Decode(&record)
if err != nil { if err != nil {
return 0, nil, err // TODO: вместо нуля должно быть реальное кол-во считанных байт return 0, nil, err // TODO: вместо нуля должно быть реальное кол-во считанных байт
} }

View File

@ -3,19 +3,19 @@ package zkv
import ( import (
"bytes" "bytes"
"crypto/sha256" "crypto/sha256"
"encoding/json" "encoding/gob"
"io" "io"
"io/ioutil" "io/ioutil"
) )
func encode(value interface{}) ([]byte, error) { func encode(value interface{}) ([]byte, error) {
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
err := json.NewEncoder(buf).Encode(value) err := gob.NewEncoder(buf).Encode(value)
return buf.Bytes(), err return buf.Bytes(), err
} }
func decode(b []byte, value interface{}) error { func decode(b []byte, value interface{}) error {
return json.NewDecoder(bytes.NewReader(b)).Decode(&value) return gob.NewDecoder(bytes.NewReader(b)).Decode(value)
} }
func hashInterface(value interface{}) ([]byte, error) { func hashInterface(value interface{}) ([]byte, error) {