summaryrefslogtreecommitdiff
path: root/xmpp/encoder_decoder.go
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp/encoder_decoder.go')
-rw-r--r--xmpp/encoder_decoder.go35
1 files changed, 34 insertions, 1 deletions
diff --git a/xmpp/encoder_decoder.go b/xmpp/encoder_decoder.go
index c2d0423..14113a6 100644
--- a/xmpp/encoder_decoder.go
+++ b/xmpp/encoder_decoder.go
@@ -1,11 +1,44 @@
package xmpp
+import (
+ "encoding/xml"
+ "log"
+ "os"
+)
+
type encoderDecoder struct{
session *session
+ ct *xml.Encoder // client transport encoder
+ cl *xml.Encoder // client log encoder
}
func newEncoderDecoder(s *session) encoderDecoder {
- ed := encoderDecoder{s}
+ ed := encoderDecoder{}
+
+ ed.session = s
+
+ ed.ct = xml.NewEncoder(s.transport)
+ ed.ct.Indent("", " ")
+
+ ed.cl = xml.NewEncoder(os.Stdout)
+ ed.cl.Indent("C: ", " ")
return ed
}
+
+func (ed *encoderDecoder) encodeToken(t xml.Token) error {
+ var err error
+ defer func() { if err != nil { log.Println(err) } }()
+
+ err = ed.ct.EncodeToken(t)
+ if err != nil { return err }
+ err = ed.ct.Flush()
+ if err != nil { return err }
+
+ err = ed.cl.EncodeToken(t)
+ if err != nil { return err }
+ err = ed.cl.Flush()
+ if err != nil { return err }
+
+ return nil
+}