And I used the principle a second time to write a CORBA 1.2 compliant ORB. That was fun without using threads. It was completely nonblocking and supported recursive calls. Terrible to debug. I expect the same of this little exercise. I am curious how well I can do. I already made the first two decisions, I will start with poll(2) and use a synchronous resolver. I looked into FreeBSDs kqueue and Linux epoll and will probably later use those two. So I will try to not make assumptions that won't work with those two implementations. The synchronous resolver is no problem, at least for now. I only need it to find the IP to bind the server socket to. There is an asynchronous resolver library called adns, but I don't want to get into it now. As the server will only block right at the start I don't see any point in making it even more complicated. But to not do something stupid, I will design a class handling the resolving and also give it an interface that makes asynchronous calls possible.
I will try to work on this little project from time to time, but my main focus remains with the raytracer and editor. In fact this little side project might even some day come in handy. If I ever get to render on multiple machines I will need a facility to control them. And I think a little HTTPD based on this work would be quite nice.