Well, this is the programming I've been doing for the last few days. For years (no really, I mean years) I've had a bit of a mental block against writing multiplexing single-threaded server architectures. I've flirted with the idea of using ACE (which is pretty much the one-true server and os system framework for C++. People who diss it are almost uniformly displaying ignorance.) But I've resisted because of a massively stubborn Not Invented Here complex. Plus I've always felt I should be able to do it. I've certainly got the C++ chops. So now me and a friend of mine are working on server architectures with an http server as a baseline implementation while I drop my XmlRpc engine in on top of it to create a really nice little package. But still I'm not satisfied. Somewhere in the stubborn block of granite that I call my mind I have a serious ego problem with not having written a nice clean pure C++ architecture for multiplexed server applications (NOT multithreaded, that's the cheap way out.) So I decided to, over the last week, sit down with a bunch of books in my lap (most notably Doug Schmidt's Network Programming in C++ books, Patterns of Software Architecture Volume 2, Modern C++ Design, and Generic Programming and the STL So at this point I've got some really great code that I'm close to declaring "live" and it took remarkably little code (as should always be the case.) Because I don't need the overhead of massive multi-platform compatibility (the disparity in the simple BSD networking method calls between posix-ish platforms are minimal enough for me to not have to worry about it) the code is actually very simple down inside the "select" calls. The upshot of this is that I'm releasing this code (but not the joint project I'm working on) when it settles down a little. AND once I find a decent tool to generate a gif or png architectural diagram I'll post that as well.
3:20:25 PM
|