package xmpp import ( "crypto/tls" "encoding/xml" "os" ) type encoder struct { tcp *xml.Encoder debug *xml.Encoder } func newEncoder(conn *tls.Conn) encoder { e := encoder{ xml.NewEncoder(conn), xml.NewEncoder(os.Stdout), } e.tcp.Indent("", "") e.debug.Indent("C: ", " ") return e } func (e *encoder) encodeNow(t xml.Token) error { err := e.encode(t) if err != nil { return err } err = e.flush() if err != nil { return err } return nil } func (e *encoder) encode(t xml.Token) error { err := e.tcp.EncodeToken(t) if err != nil { return err } err = e.debug.EncodeToken(t) if err != nil { return err } return nil } func (e *encoder) flush() error { err := e.tcp.Flush() if err != nil { return err } err = e.debug.Flush() if err != nil { return err } return nil } func (e *encoder) Close() error { err := e.tcp.Close() if err != nil { return err } err = e.debug.Close() if err != nil { return err } return nil }