User login

Weekly Report

20

May

2012

Made some concrete decisions in the meeting on Monday: implementing a STOMP 1.1 C client, then dealing with persistence, then working on integrating into AMP. Was going to take another look at MQTT, but quickly noticed that unlike the Java version, the C version of the Eclipse Paho client (with built in persistence, the main advantage) doesn't do SSL and is a reasonably complicated library.

Thought implementing a STOMP library would be relatively straightforward, since it is a simple text-based protocol and remembering doing a simple HTTP server in a previous course. Of course that was in Java, and everything in C (particularly to do with strings and potential buffer overflows) is a lot more complicated. OpenSSL also has rather sparse documentation. There is a very lightweight C library, libstomp, that allows basic frame sending and receiving (using APR with hash tables for headers and the like), but it doesn't support SSL. Spent several hours trying to get my head around APR, but despite supporting OpenSSL crypto functions it doesn't actually seem to support SSL sockets.

Also had a quick look at Berkeley DB for persistence (since I came across support for it in APR), was a little excited about the 'recno' storage option (one of several) that is flat record number indexed, but it needs a record separating character which isn't going to work with binary messages.