- Low latency Asynchronous communications are now supported via an upgraded MOOSDB and a new kind of communications client object MOOSAsyncCommClient. This allows data to be pushed to clients by the MOOSDB rather than clients having to fetch messages which match their subscriptions when the call into the MOOSDB. This affords a drastically decreased latency between data being published and clients receiving it. Latencies are routinely sub-millisecond now.
- Multithreaded design The MOOSDB now offers improved resilience when working with clients which reside at the end of a high latency or low bandwidth link. Each client is now furnished with its own thread within the DB which allows each client to take as long as it needs to complete and read or write without holding up the interactions of other clients. This behaviour can be disabled from the command line in which case the behaviour of the DB reverts to pre V10 behaviour.
- Wildcard subscriptions The MOOS communications API now supports wildcard subscriptions whereby clients can subscribe to variable which match variable name patterns and also source name patterns. For example a client could register for “*:*” meaning all variables from all sources or “J*:*K” meaning any variable beginning with “J” from a process ending in “K”
- Configurable behaviour in the way CMOOSApp handles mail. You can have mail handled pretty much as soon as it comes in. If you are using the low level comms object MOOSAsyncCommClient you can have a call back handled the instant mail arrives.
- Standard Command Line Switches All MOOS applications can with a trivial code change be configured to handle and interpret standard command line parameters. Additionally, a tool is provided to ease parsing command line options. CMOOSApp has new hooks to support and encourage the writing of user help and example configurations which can be printed to stdio.
- A new build system is provided which via CMake make linking against MOOS (and the right version) easy.
- New testing command line programs which can easily be used to test MOOS communications
- Live diagnostics from the MOOSDB are avaiable over udp
What is the Cost of Moving to V10?
None. A lot of effort has been taken to make the user's transition to MOOS V10 painless.
- No necessity to change any source code to use V10
- The only thing a user does need to do is link against a new library libMOOS and this is made easy with the revamped CMake build system.
- No assumption is made the all components of a MOOS system will be upgraded. It is entirely possible to use a holy relic pre-V10 clients or an old trusted MOOSDB with new or rebuilt software which has linked against V10. There is no change in the wire protocol
- If your circumstances dictate (insurance requires old code) you can even run the new V10 MOOSDB in safe mode in which it reverts to running the pre-V10 source code.