<feed xmlns='http://www.w3.org/2005/Atom'>
<title>limox/xmpp, branch session-struct</title>
<subtitle>The Linux on mobile XMPP (LimoX) client</subtitle>
<id>https://cgit.xengineering.eu/limox/atom?h=session-struct</id>
<link rel='self' href='https://cgit.xengineering.eu/limox/atom?h=session-struct'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/'/>
<updated>2023-09-04T20:47:31Z</updated>
<entry>
<title>Add xmpp.SessionFrontend.Disconnect()</title>
<updated>2023-09-04T20:47:31Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-09-04T20:47:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=dc8ff3e7d214c6a390f2aa5c794891b17c418640'/>
<id>urn:sha1:dc8ff3e7d214c6a390f2aa5c794891b17c418640</id>
<content type='text'>
This is the first convenience function implemented inside the xmpp
module but for the goroutine of the using application.
</content>
</entry>
<entry>
<title>xmpp: Add type SessionFrontend</title>
<updated>2023-09-04T20:44:00Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-09-04T20:18:53Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=93668403433cbfc22fe9c38ebbd6ef67af625ad2'/>
<id>urn:sha1:93668403433cbfc22fe9c38ebbd6ef67af625ad2</id>
<content type='text'>
Some parts of the `xmpp` module functionality should be written for the
using application software. To reference a running session more easily
it is an advantage to have an opaque struct for this instead of
decoupled channels.
</content>
</entry>
<entry>
<title>Apply go fmt</title>
<updated>2023-07-06T19:43:42Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-06T19:43:42Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=007f413e457ff0b733447acba61b11d6813dd41c'/>
<id>urn:sha1:007f413e457ff0b733447acba61b11d6813dd41c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement roster result handling</title>
<updated>2023-07-06T19:42:43Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-06T19:42:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=a3e01c9a867791b466fe2a3e1d0efd77c840729b'/>
<id>urn:sha1:a3e01c9a867791b466fe2a3e1d0efd77c840729b</id>
<content type='text'>
This completes the roster get / result cycle which is needed for a MVP.
</content>
</entry>
<entry>
<title>Implement roster get request</title>
<updated>2023-07-06T19:29:34Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-06T19:29:34Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=7960453fb4c56d2fdf9cae08df457027bd62ae6d'/>
<id>urn:sha1:7960453fb4c56d2fdf9cae08df457027bd62ae6d</id>
<content type='text'>
This asks the server for the roster / contact list for the current
account.
</content>
</entry>
<entry>
<title>Use different IQ struct for RX and TX</title>
<updated>2023-07-06T19:21:33Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-06T19:21:33Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=553537a2c9f08450614648d7184b6bbf212d5ed5'/>
<id>urn:sha1:553537a2c9f08450614648d7184b6bbf212d5ed5</id>
<content type='text'>
It is quite tricky to write structs with correct XML struct tags which
are suitable for RX and TX because in RX structs all possible fields
have to be addressed and in TX some have to be hidden depending on the
use case.
</content>
</entry>
<entry>
<title>Migrate bind sending to new generic iq struct</title>
<updated>2023-07-05T20:34:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T20:34:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=4cc9ea5cd439a1f5306f38838774b46d2b145d9a'/>
<id>urn:sha1:4cc9ea5cd439a1f5306f38838774b46d2b145d9a</id>
<content type='text'>
This makes the code way less complex.
</content>
</entry>
<entry>
<title>Migrate bind receive to new iq struct</title>
<updated>2023-07-05T20:02:02Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T20:01:14Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=57845892dbfc6db0648b18e418a6b15218d8526c'/>
<id>urn:sha1:57845892dbfc6db0648b18e418a6b15218d8526c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add new generic iq struct</title>
<updated>2023-07-05T20:01:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T19:59:37Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=13eeca2177dc767aa7d01c9caed95ae2be736471'/>
<id>urn:sha1:13eeca2177dc767aa7d01c9caed95ae2be736471</id>
<content type='text'>
This will cover all iq use cases with optional arguments and
sub-elements.
</content>
</entry>
<entry>
<title>Move bind logic to new xmpp/iq.go</title>
<updated>2023-07-05T20:01:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T19:46:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=989c6ee9158f67cda2d6287d096c813075d13bd2'/>
<id>urn:sha1:989c6ee9158f67cda2d6287d096c813075d13bd2</id>
<content type='text'>
The bind request / response works with IQ stanzas. Because of the way
encoding and decoding is done with LimoX / the Go standard library it
makes sense to group IQ-based logic in a separat file since the struct
for IQs will be there.
</content>
</entry>
<entry>
<title>Apply go fmt</title>
<updated>2023-07-05T19:26:12Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-05T19:26:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=4dc3723f68c390ed05ddeff13f2378da7ebf2b8f'/>
<id>urn:sha1:4dc3723f68c390ed05ddeff13f2378da7ebf2b8f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement echo bot</title>
<updated>2023-07-05T19:24:01Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:51:10Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=ce7814012009ba8f5b72d49e2ec96d5594be895e'/>
<id>urn:sha1:ce7814012009ba8f5b72d49e2ec96d5594be895e</id>
<content type='text'>
This demonstrates the full one-to-one chat message backend without the
need to implement the GUI.
</content>
</entry>
<entry>
<title>Implement (chat) message receiving backend</title>
<updated>2023-07-04T20:30:44Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:30:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=107f97f2cd3ff8dbbdb39269e622462c48b0d41c'/>
<id>urn:sha1:107f97f2cd3ff8dbbdb39269e622462c48b0d41c</id>
<content type='text'>
This sets a handler and the routing up to be able to log chat messages
with body and sender reference.

This can later be used for the GUI.
</content>
</entry>
<entry>
<title>Apply go fmt</title>
<updated>2023-07-04T20:09:36Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:09:36Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=d9fe0a4360770b1e4b6b4fb3686c3275ad1b6e6e'/>
<id>urn:sha1:d9fe0a4360770b1e4b6b4fb3686c3275ad1b6e6e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove unused code</title>
<updated>2023-07-04T20:09:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:09:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=4c9c6c91f9dfca9fd17731d5b0e94aaaace4a137'/>
<id>urn:sha1:4c9c6c91f9dfca9fd17731d5b0e94aaaace4a137</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Re-implement resource binding and presence</title>
<updated>2023-07-04T20:04:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T20:04:05Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=a23ba089a4e715e68b8c8d4179290692215784a2'/>
<id>urn:sha1:a23ba089a4e715e68b8c8d4179290692215784a2</id>
<content type='text'>
This was removed for refactoring.
</content>
</entry>
<entry>
<title>Add namespace to streamFeatures struct</title>
<updated>2023-07-04T19:48:23Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T19:48:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=ed6b4e818f4090c0c707fab49093bc4c3cc3ac20'/>
<id>urn:sha1:ed6b4e818f4090c0c707fab49093bc4c3cc3ac20</id>
<content type='text'>
This prevents collisions.
</content>
</entry>
<entry>
<title>Re-implement SASL</title>
<updated>2023-07-04T19:24:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T19:24:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=2c71877e392da6c2691827160142e95142f7bea6'/>
<id>urn:sha1:2c71877e392da6c2691827160142e95142f7bea6</id>
<content type='text'>
Was broken because of switch to new RX concept.
</content>
</entry>
<entry>
<title>Introduce handle() as dummy</title>
<updated>2023-07-04T14:37:27Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T14:37:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=e529bab2e5df93ff8e9fd415b9d65e9bb6d17695'/>
<id>urn:sha1:e529bab2e5df93ff8e9fd415b9d65e9bb6d17695</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement XML element parsing with Generic</title>
<updated>2023-07-04T14:26:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T14:26:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=7902764e053eb3b8b4d46f8d9caf47d2d5cddd7c'/>
<id>urn:sha1:7902764e053eb3b8b4d46f8d9caf47d2d5cddd7c</id>
<content type='text'>
This helps to avoid duplicated code when new XML elements are described
as custom structs.
</content>
</entry>
<entry>
<title>Rework routing completely</title>
<updated>2023-07-04T12:26:01Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T12:25:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=3a5e9fce02264eeed884b15781593479fda9296a'/>
<id>urn:sha1:3a5e9fce02264eeed884b15781593479fda9296a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Further reduce complexity of streamFeatures struct</title>
<updated>2023-07-04T12:06:36Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T12:06:36Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=1d3dfa5b93000bc4109ba49ea018e72fbf4f5753'/>
<id>urn:sha1:1d3dfa5b93000bc4109ba49ea018e72fbf4f5753</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Just pass parsed data if successful</title>
<updated>2023-07-04T12:01:51Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T12:01:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=3826f3ee7850590142fe51747447dffece332762'/>
<id>urn:sha1:3826f3ee7850590142fe51747447dffece332762</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reduce complexity of streamFeatures struct</title>
<updated>2023-07-04T11:57:26Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T11:57:26Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=e5257c8a9c3dfcda52fb96fcac2ac81aefb52e55'/>
<id>urn:sha1:e5257c8a9c3dfcda52fb96fcac2ac81aefb52e55</id>
<content type='text'>
</content>
</entry>
<entry>
<title>First working version of new RX concept</title>
<updated>2023-07-04T11:48:34Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T11:48:34Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=92534f5af88b42665ad44f2495fe5dfb116d3406'/>
<id>urn:sha1:92534f5af88b42665ad44f2495fe5dfb116d3406</id>
<content type='text'>
This uses xml.Decoder.DecodeElement() which makes parsing way easier.

This first step is just able to parse stream features partially.
</content>
</entry>
<entry>
<title>Remove unit test for router</title>
<updated>2023-07-04T11:42:24Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T11:42:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=45b04ef092a99d0d3f355e27896c82f1dbf15d28'/>
<id>urn:sha1:45b04ef092a99d0d3f355e27896c82f1dbf15d28</id>
<content type='text'>
The new router will be so trivial that it is not worth a unit test.
</content>
</entry>
<entry>
<title>Re-implement stream open and close</title>
<updated>2023-07-04T10:58:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T10:58:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=ea98ee187477051444bbf548757af6336d333862'/>
<id>urn:sha1:ea98ee187477051444bbf548757af6336d333862</id>
<content type='text'>
This is more suitable for the new RX concept.
</content>
</entry>
<entry>
<title>Remove xmpp.presence type</title>
<updated>2023-07-04T10:43:47Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T10:43:47Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=8e84ca8a4d340956bd0aaead59d5c79dcaede6a5'/>
<id>urn:sha1:8e84ca8a4d340956bd0aaead59d5c79dcaede6a5</id>
<content type='text'>
This was empty and has no benefit.
</content>
</entry>
<entry>
<title>Remove runStreamPair()</title>
<updated>2023-07-04T10:35:49Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T10:33:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=9f87ef34c589825d65824a8c9210fed5bf92f94d'/>
<id>urn:sha1:9f87ef34c589825d65824a8c9210fed5bf92f94d</id>
<content type='text'>
This will not be used in the new RX concept.
</content>
</entry>
<entry>
<title>Remove element_buffer</title>
<updated>2023-07-04T10:30:02Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-07-04T10:30:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/limox/commit/?id=5932556e7051690e262a5ee39263b7905bf1ba20'/>
<id>urn:sha1:5932556e7051690e262a5ee39263b7905bf1ba20</id>
<content type='text'>
The new RX concept will not need such an element buffer and uses the
xml.Decoder.DecodeElement() function instead.
</content>
</entry>
</feed>
