diff options
author | xengineering <me@xengineering.eu> | 2023-06-16 17:06:20 +0200 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2023-06-16 17:12:09 +0200 |
commit | ae8d61bee60a29e2bbfc9cfbb400d8451d00de11 (patch) | |
tree | 5a7cec2b0195ac41ba8a6d33ece45804bb2ff29a | |
parent | 2d9864426272055151c42cf6bc2d13fbe11ca50c (diff) | |
download | limox-ae8d61bee60a29e2bbfc9cfbb400d8451d00de11.tar limox-ae8d61bee60a29e2bbfc9cfbb400d8451d00de11.tar.zst limox-ae8d61bee60a29e2bbfc9cfbb400d8451d00de11.zip |
Add chan xml.Token xmpp.session.rx
This allows the goroutine which fetches all tokens from the server to
forward them to the main goroutine of the session.
-rw-r--r-- | xmpp/encoder_decoder.go | 3 | ||||
-rw-r--r-- | xmpp/session.go | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/xmpp/encoder_decoder.go b/xmpp/encoder_decoder.go index c8ccd89..7a917da 100644 --- a/xmpp/encoder_decoder.go +++ b/xmpp/encoder_decoder.go @@ -65,7 +65,8 @@ func (ed *encoderDecoder) run() { if err != nil { log.Println("Could not encode to server stream log") } err = ed.sl.Flush() if err != nil { log.Println("Could not flush server stream log") } - _ = xml.CopyToken(t) // TODO do something meaningful here + c := xml.CopyToken(t) + ed.session.rx <- c } if err != nil { if errors.Is(err, io.EOF) { return } diff --git a/xmpp/session.go b/xmpp/session.go index 080fb21..2162d66 100644 --- a/xmpp/session.go +++ b/xmpp/session.go @@ -17,6 +17,7 @@ type session struct { transport *tls.Conn ed encoderDecoder streams []stream + rx chan xml.Token } func StartSession(out chan any, jid string, pwd string) chan any { @@ -26,6 +27,7 @@ func StartSession(out chan any, jid string, pwd string) chan any { s.in = make(chan any) s.out = out s.streams = make([]stream, 0) + s.rx = make(chan xml.Token, 0) go s.run() @@ -55,6 +57,8 @@ func (s *session) run() { case SessionShouldDisconnect: return default: log.Printf("Unknown data '%d'!\n", data) } + case _ = <-s.rx: + // TODO route received XML token here } } } |