diff --git a/decode.go b/decode.go index 08f6baf..89278ab 100644 --- a/decode.go +++ b/decode.go @@ -6,11 +6,12 @@ import ( "encoding/binary" "errors" "io" + "os" "reflect" "time" "unsafe" - "github.com/nu7hatch/gouuid" + uuid "github.com/nu7hatch/gouuid" ) var typeSize = []int{ @@ -385,3 +386,25 @@ func readData(r *bufio.Reader, order binary.ByteOrder) (kobj *K, err error) { } return nil, ErrBadMsg } + +func ReadFromBuffer(data *bytes.Buffer) (*K, error) { + var order = binary.LittleEndian + reader := bufio.NewReader(data) + // Read 0xFF, 0x01 bytes magic number + reader.ReadByte() + reader.ReadByte() + return readData(reader, order) +} + +func ReadFromFile(filename string) (*K, error) { + var order = binary.LittleEndian + f, err := os.Open(filename) + if err != nil { + return nil, err + } + reader := bufio.NewReader(f) + // Read 0xFF, 0x01 bytes magic number + reader.ReadByte() + reader.ReadByte() + return readData(reader, order) +} diff --git a/encode.go b/encode.go index f42513d..b30bee0 100644 --- a/encode.go +++ b/encode.go @@ -5,6 +5,7 @@ import ( "encoding/binary" "errors" "io" + "os" "reflect" "strconv" "time" @@ -156,3 +157,34 @@ func Encode(w io.Writer, msgtype ReqType, data *K) error { _, err := w.Write(Compress(b)) return err } + +func WriteToBuffer(data *K) (*bytes.Buffer, error) { + var order = binary.LittleEndian + buf := new(bytes.Buffer) + + buf.Write([]byte{0xFF, 0x01}) + if err := writeData(buf, order, data); err != nil { + return nil, err + } + + return buf, nil +} + +func WriteToFile(filename string, data *K) error { + var order = binary.LittleEndian + buf := new(bytes.Buffer) + + buf.Write([]byte{0xFF, 0x01}) + if err := writeData(buf, order, data); err != nil { + return err + } + + f, err := os.Create(filename) + if err != nil { + return err + } + f.Write(buf.Bytes()) + defer f.Close() + + return nil +} diff --git a/go.mod b/go.mod index bc5bc4d..3b482f0 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module github.com/sv/kdbgo +go 1.18 + require github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..2ba970e --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= +github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=