Tomas Karasek wrote:
Hi everyone,

Hi Tomas,

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 files once usefull
code from there goes to 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
IdleQueue.process() calls.

Is NonBlockingClient good place for Gajim unit testing?

I let bct reply here :)
Gajim-devel mailing list

Reply via email to