Tomas Karasek wrote:
I see two ways of implementing the BOSHTransport:
* Use NonBlockingTcp as TCP connection - In this case, some changes have
to be done in NonBlockingTcp:
- sending of </stream> on TCP disconnecting would have to move to
Client or to Connection - stream is closed differently in BOSH
- loop of _do_connects over IP addresses from getaddrinfo() also to
Client - considering the nonpersisent HTTP - after TCP disconnect,
client should connect to CM where its session is already opened (to
the same IP), plus no need for DNS requests every time
- maybe some more things I don't see right now
There is advantage of reusing the HTTPProxy and SOCKS5Proxy classes
derived from NonBlockingTcp - same could be used for XMPP over proxy
as for BOSH over proxy.
* Write BOSHTransport from scratch - In this case, I would write new
TCP/HTTP wrappers implementing the IdleObject interface. There could
probably be some code duplication between NonBlockingTcp and
BOSHTransport. Another proxy wrappers have to take place.
I'm up for the first option.
I also think first option is better
What about doing a NonBlockingCommonTcp that will contain common code
for both NonBlockingTcp and NonBlockinhBoshTcp?
I'm just interested in your
opinions about the current state of Gajim xmpppy and improvement
suggestions I could consider. I went through
Indeed that's all problems we have with xmpppy
and I'll try to remove the unused code for starters.
Haa good start ! Maybe we can remove the non _nb.py files once usefull
code from there goes to _nb.py files.
Another topic is xmpppy testing - If I was about to refactor
NonBlockingTcp class, I would probably first write a unit test for
NonBlockingClient to avoid unintentional screw up of something. I'm not
very familiar with unit testing but I quickly read unittest python
manual and it could be done like this: initialize IdleQueue and
callbacks in setUp() method, and then calling functions for connecting,
authentication, sending a message etc. interleaved with
Is NonBlockingClient good place for Gajim unit testing?
I let bct reply here :)
Gajim-devel mailing list