Red Hat Bugzilla – Bug 447540
c++ client API clean-up
Last modified: 2011-08-12 12:20:11 EDT
Description of problem:
Client header files are a mix of implementation details and user API.
Client header files expose some implementation details.
Separate client API headers from client implementation files, move API headers
from cpp/src to cpp/include
Refactor API headers to move implementation details out of include/ and into
src/ Use PIMPL idiom. Note existing Connection/Session classes are almost PIMPL
but still have some private implementation details exposed.
NOTE: Only API headers in include/ should be installed by qpidc-devel.
Ultimately qpid-devel also needs this treatment but it is lower priority since
we don't yet plan to support customers writing their own broker plug-ins.
We also need to
- added make check tests to ensure that public .h files do not #include private ones (gen a dummy file that includes all the public .h files & compile with only -I <public-include>)
- do some refactoring to reduce the amount of impl we expose in those files
- use the full PIMPL idiom (expose only a void* or T* for a forward-declared type T)
- Have no virtual fns. in public classes, except for classes that are intended to be inherited from by the user.
- fixu up gcc options so that only public methods in public .h files are visible in libqpidclient.so