I prepared three branches, in preparation for a pull request, but there's still some minor work left to do, so this is more like a "review the structure and plan before the pull request, please" request. All three branches are integration branches, and as such, I will rebase them from time to time. All three branches are folded into one commit over their base, signed-off, and should have proper descriptions. * integration/libmongo-client This one adds a git submodule, which pulls in the libmongo-client library from github to modules/afmongodb/libmongo-client. Also adds infrastructure to make autogen.sh, configure and make enter this directory and Do The Right Thing. At the moment, linking with the supplied libmongo-client is the only option, because the library is not yet ready for system-wide install. It is easy to extend this framework to use the system library if it exists - that is one of the missing features which should go into this branch, but isn't there yet. * integration/afmongodb/base This is the basic, bare-bones driver, without support for dynamic values: it depends on the previous one, and doesn't change anything outside of modules/afmongodb/, except lib/stats.[ch], where it adds SCS_MONGO for stat counter support. The current state of the driver is reasonably stable, there are three known problems that I am aware of: + Segfaults whenever the writer thread emits an msg_debug() or similar itself. This is actually a bug in ivykis, for which Bazsi had a fix for, but I can't find the fix in his git tree yet (only the log message, but without the patch). + Locking issues: it's fairly easy to push the driver into a deadlock, where it will just sit and wait, not doing a thing. I've only seen this happen with flow-control enabled, though. This will have to be solved before I'm confident enough to ask for a pull. + The libmongo-client library is built as a shared library, and is installed as such. It should be static-only, and not installed, only linked to afmongodb. This will be implemented mostly in libmongo-client, and an update of the integration/libmongo-client branch will pull that in; then this branch will be updated accordingly. * integration/afmongodb/dyn-vars Based on integration/afmongodb/base, this adds dynamic_values() support. Minor modifications are done to nvtable too, but it's a very small patch, and very straightforward too. However, as discussed earlier, the goal in the long run is to develop a generic framework for this kind of thing, so this here is more like a temporary solution so that people can experiment with the key feature the mongodb provides over the others. Until the generic framework is ready, this, I believe, is an acceptable compromise. -- |8]