OpenMAMA Simplified Base Middleware Bridge Implementation

Frank Quinn

Hi Folks,

As you may have heard recently, we have been working on reducing the burden of implementing each of the middleware bridge methods when writing bridges.

The solution we're working on involves:

1. Adding a "base" implementation bridge. This includes io, timer and queue as well as some sane default implementations of methods. This will be dynamically linked by the bridge that wants to make use of the base implementation.
2. The base bridge includes timer, queue and io implementations which will be modified to ensure they're properly encapsulated across middleware bridges (i.e. heap allocated state associated with each bridge).
3. The implementation bridge may then simply declare in its init function that it wants to make use of the base implementaion bridge, then any method which is not implemented by the bridge itself will fall back to the base bridge implementation.
4. Reducing the number of methods which need to be implemented in the bridge from 86 to 20

It's basically inheritance for C structs of function pointers.

You can find the latest development branch here:

We have an implementation currently working with ZeroMQ, and will be updating qpid to support it soon too. It mostly involves migrating methods to the base implementation to avoid duplication.

In the next release this will bump the middle part of the version number (which reflects bridge compatibility). This is because although it is entirely backwards compatible, bridges making use of this functionality will not be backwards compatible.


Frank Quinn 
T: +44 (0) 28 8678 8015