diff options
author | Alexander Pevzner <pzz@apevzner.com> | 2020-01-13 17:56:55 +0300 |
---|---|---|
committer | Alexander Pevzner <pzz@apevzner.com> | 2020-01-13 17:56:55 +0300 |
commit | 29809edfed95438ff4afab72c7b1363a28c61336 (patch) | |
tree | a9333ceaba53766a07c944d378ee946211f46c46 | |
parent | 9bf19be54dfffcdd2fdc39df437b2c894393794f (diff) |
Added (*Message) DecodeBytes() and (*Message) EncodeBytes()
-rw-r--r-- | message.go | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -9,6 +9,7 @@ package goipp import ( + "bytes" "fmt" "io" ) @@ -97,7 +98,7 @@ func (m *Message) Reset() { *m = Message{} } -// Encode the message +// Encode message func (m *Message) Encode(out io.Writer) error { me := messageEncoder{ out: out, @@ -106,15 +107,29 @@ func (m *Message) Encode(out io.Writer) error { return me.encode(m) } -// Decode the message +// Encode message to byte slice +func (m *Message) EncodeBytes(out io.Writer) ([]byte, error) { + var buf bytes.Buffer + + err := m.Encode(&buf) + return buf.Bytes(), err +} + +// Decode message func (m *Message) Decode(in io.Reader) error { md := messageDecoder{ in: in, } + m.Reset() return md.decode(m) } +// Decode message from byte slice +func (m *Message) DecodeBytes(data []byte) error { + return m.Decode(bytes.NewBuffer(data)) +} + // Print pretty-prints the message. The 'request' parameter affects // interpretation of Message.Code: it is interpreted either // as Op or as Status |