Attached a proposal for a high-level C++ client API. The existing client::Session class will be renamed Session_0_10 and remain as an internal direct mapping of the 0_10 protocol. The new API is just a thin layer over Session_0_10 providing:
- improved usability
- abstraction from specific protocol version
The usability improvements include
- Self-contained classes reflecting domain concepts (Queue, Exchange, Subscriber, Subscription)
- simplification of obscure (and probably change-prone protocol) areas: E.g. apply a simple flow control policy object rather than fiddling with session.MessageFlow functions.
- Better memory safety, simpler thread management (these last points could be integrated early into the existing API.)
Comments are most welcome, lets hone it before we implement it.