In order to resolve SMACK-361 I did a major rewrite of Jonas’s Entity Capabillities patch in the last few days. I am pretty satisfied with the result. Entity Capabilites does a great job preventing disco#info request/response storms and comes in very handy in resource constraint environments where bandwith usage matters and roundtrip times are a factor.
The basic idea behind “caps” is that every entity broadcasts a so called verification string with it’s presence stanza. The verification depends on the announced features, identities and extended information of an entity. If one or more entities “broadcast” the same verification string, we can assume that they support the same feature set. A service discovery request is only needed once to query the features of a given verification string.
You can view the current state of the patch on github. In order to get a diff of the patch against the current trunk use
git clone git://github.com/Flowdalic/smack.git
git diff upstream master
Feel free to critizise and suggest improvements. The javadoc is not completly yet. You can send patches or open pull requests on github if you found something that needs improvement.