Ongoing work

  3 posts   Feedicon  
Replies: 2 - Last Post: June 19, 2011 21:35
by: gmaynard
showing 1 - 3 of 3
 
Posted: May 22, 2011 06:12 by gmaynard
I've posted the work I've done on jbosh here:

https://github.com/zewt/jbosh

(FYI, I use svn-git to manage svn/git synching; you can probably do the same to go the other way, if you want to pull anything.)

- XLightWeb is no longer used. The backend is still in there (it should probably be removed), but I wasn't able to get sensible pipelining behavior out of it, and those libraries are unpleasantly written and not worth trying to fix problems in. It also doesn't work on Android, which (if I remember correctly) lacks nio bits it needs, and they're fairly large libraries. I've replaced it with a small, self-contained HTTP client.
- HTTP pipelining is supported. This allows implementing a transmission window both in the C->S and S->C directions. S->C windowing requires a 'hold' value greater than 1; C->S windowing requires a 'requests' value greater than one plus the value of 'hold'.
- Session recovery is supported. See 805d0077 for details.
 
Posted: June 17, 2011 23:38 by Mike Cumings
Thanks, Glenn.

I'll work to integrate the changes into the core as best I can when my time frees up. Rather than rip out SPIs, I'll probably just rework the API a bit to allow cleaner integration for more broadly divergent implementations. That will give you the ability to bundle (only) your custom HTTP implementation and yet allow others to use more spec-complete implementations. I'm intentionally not making any API stability guarantees until 1.0 which - from a feature perspective - isn't too far off.

I think I'll also swap out subversion with git, now that Kenai supports it. That will make things easier if you (or others) want to maintain a separate fork for your purposes. Smile

 
Posted: June 19, 2011 21:35 by gmaynard
Do what you think is useful, but I'm not sure if there's much reason to use a different HTTP backend. BOSH needs a particular enough subset of HTTP that it's difficult to get any other libraries to do it well--I tried every Java HTTP library that seems to exist, and they all fail utterly at pipelining (even the bloated org.apache.http has, unbelievably, no support for pipelining at all)--and it's a small enough subset that it's not a lot of code to just implement it directly.

I'd strongly recommend dropping XLightWeb, though. It's not a production-quality library, and it caused so many headaches that I even spent the time rewriting the stub CM code in the test harness to eliminate it.

Also, note that META-INF simply doesn't work on Android; due to some bug, the build tools simply ignore paths with "META-INF" in them. If you want to load configuration from a file you can use a different path, but it's a lot simpler to just receive an instance or a factory directly from the user.
Replies: 2 - Last Post: June 19, 2011 21:35
by: gmaynard
  • Mysql
  • Glassfish
  • Jruby
  • Rails
  • Nblogo
Terms of Use; Privacy Policy;
© 2010, Oracle Corporation and/or its affiliates
(revision 20120518.3c65429)
 
 
Close
loading
Please Confirm
Close