From a54a6beba78e8366064cbddc8812a17ecd7363a6 Mon Sep 17 00:00:00 2001 From: Tobias Jacob Date: Fri, 10 Jun 2022 13:42:28 +0200 Subject: [PATCH 1/2] added way to write binary files --- decode.go | 16 +++++++++++++++- encode.go | 20 ++++++++++++++++++++ go.mod | 2 ++ go.sum | 2 ++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 go.sum diff --git a/decode.go b/decode.go index 08f6baf..03f4d93 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,16 @@ func readData(r *bufio.Reader, order binary.ByteOrder) (kobj *K, err error) { } return nil, ErrBadMsg } + +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..1e16cca 100644 --- a/encode.go +++ b/encode.go @@ -5,6 +5,7 @@ import ( "encoding/binary" "errors" "io" + "os" "reflect" "strconv" "time" @@ -156,3 +157,22 @@ func Encode(w io.Writer, msgtype ReqType, data *K) error { _, err := w.Write(Compress(b)) return err } + +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= From 2368e434255baa81f187c7a05bb6ae842629dba6 Mon Sep 17 00:00:00 2001 From: Tobias Jacob Date: Mon, 13 Jun 2022 10:20:59 +0200 Subject: [PATCH 2/2] added read and write to buffer --- decode.go | 9 +++++++++ encode.go | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/decode.go b/decode.go index 03f4d93..89278ab 100644 --- a/decode.go +++ b/decode.go @@ -387,6 +387,15 @@ 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) diff --git a/encode.go b/encode.go index 1e16cca..b30bee0 100644 --- a/encode.go +++ b/encode.go @@ -158,6 +158,18 @@ func Encode(w io.Writer, msgtype ReqType, data *K) error { 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)