From ae8d61bee60a29e2bbfc9cfbb400d8451d00de11 Mon Sep 17 00:00:00 2001 From: xengineering Date: Fri, 16 Jun 2023 17:06:20 +0200 Subject: 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. --- xmpp/encoder_decoder.go | 3 ++- xmpp/session.go | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) 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 } } } -- cgit v1.2.3-70-g09d2