Great news: the circus server process runs!
It does nothing yet except listening on a network socket; but it means that the following pieces are in place:
- configuration (although the server is designed to work with zero conf)
- libuv and zmq integration (I am quite happy with that one)
The vault has already been designed too. It will have the same concept that drove pwd's: one file. But its structure is vastly different; pwd switched from a home format to JSON. Circus will use sqlite instead, which is the best tool for the job.
I also draw one lesson from the past days: one cannot code without a vision. I had to stop and think for a while. Now I know where I am going!
Here is what I want:
- Contrarily to pwd, the client expects the server to run. It is not be responsible with starting the server. All operating systems offer tools that are adapted to process supervision. Those tools must be used.
- That has one important impact: pwd made the assumption that each user would start their own server process at will. Since the server is now started by the system, it must be multi-user.
- Minimal time/space in which the data transits in clear. That means zeroing data and mlock()ing it. Thanks to libcad the memory handling functions may be simply redefined.
- Zero-conf by default. Things must work out of the box.
- OSI-like network layering. Zmq as low-level, and above that message handlers that virtually talk to each other.
- Keep the red nose. I want a light tone, some humor does no harm.
Now that the server starts, the next step is to make it do something. Dance, play the trumpet, maybe even make the lion jump through hoops?