This week has been (and will be) mostly an engineering week for me, but it’s an exciting one so I thought I’d let everyone know what’s going on.Â First, I’m working on improving BAM to be easier to use from a developer’s point of view.Â Essentially we moved to an introspected service instead of a strict interface for receiving events.Â To give an example, the main BAM interface for receiving events is BamStream.Â It contains methods like the following:
There are similar methods for queryGet, querySet, etc. These methods are event handlers that are called on a service when a new message or query arrives for the service. The problem with this is you might have to write the following dispatch pattern:
This isn’t too bad, but it looks messy when you have a ton of different message types. To fix the problem, we’ve written a base class called GenericService. Now instead of writing the code above, you would extend GenericService and write the following:
This is equivalent to the code before, but now we do the dispatch for you. Under the covers, there’s some reflection magic going on, but basically all you have to do is make methods that match the right signature and use parameter annotations like @Message, @QueryGet, @Presence, etc.
In other news, I’ve also been making sure that WordPress Mu works with Quercus. There were a couple of buglets, but those are fixed in the trunk now and it should be ready to go with Resin 3.2.0, due out in about 2-3 weeks. I put up a wiki page that describes how to do the installation. It’s a bit long right now, but hopefully we’ll soon be getting a Debian install that reduces the steps by half.