We need a layer just above libzmq which provides utility functions (including functions that have been dropped from 3.0). This should be in C/C++ to allow performance in slower languages. Making this a separate project allows it to evolve faster than libzmq, who's API is frozen for long periods.
- Must be portable to all platforms that libzmq runs on.
- Must be written in C or C++ for performance (I'd prefer C since it's more accessible).
- Provide a set of devices, listed below.
- Provide a set of clock and timer functions (which aren't otherwise portable).
- Provide a thread creation API (which is otherwise not portable).
- A switch device that switches messages between a front-end and back-end socket (same as zmq_device(3)). This is used to create forwarders, queues, and streamers.
- A router device that switches messages in and out of a front-end ROUTER socket, switching addresses during each cross-over.
- A persist device that stores messages onto a durable disk file, then forwards them. This replaces and extends the SWAP socket option.