summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Pevzner <pzz@apevzner.com>2020-01-13 17:56:55 +0300
committerAlexander Pevzner <pzz@apevzner.com>2020-01-13 17:56:55 +0300
commit29809edfed95438ff4afab72c7b1363a28c61336 (patch)
treea9333ceaba53766a07c944d378ee946211f46c46
parent9bf19be54dfffcdd2fdc39df437b2c894393794f (diff)
Added (*Message) DecodeBytes() and (*Message) EncodeBytes()
-rw-r--r--message.go19
1 files changed, 17 insertions, 2 deletions
diff --git a/message.go b/message.go
index 2e215f8..e9ac504 100644
--- a/message.go
+++ b/message.go
@@ -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