The FIX part seems reasonably robust, but still isn't doing much validation. The network part is fairly basic, but works. The exchange... well... it's OK for a single client, but seems to have some issues with concurrency and can occasionally deadlock.
I've had two clients trading with each other, and I've learned a lot about the protocol - and been surprised by how little documentation is available for some of this. Which is as much as I could have hoped for in a weekend, really.
The biggest tasks still to handle are:
- * Validation of the FIX messages
- * The remainder of the FIX4.0 standard
- * A proper multithreaded exchange
- * Rearranging the code into subpackages
- * Implementing the FIX4.1 and 4.2 protocols
As promised, the code - such as it is - is available here. I've decided to call it FIXME as a pun on the protocol and the state of the code. I'm releasing it as public domain, so if - God forbid - anyone wants the code, they can have it without attribution.
